openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_newBir sertifika imzalama isteği (CSR) üretir

Açıklama

openssl_csr_new(
    array $ayırdedici_adlar,
    OpenSSLAsymmetricKey &$gizli_anh,
    ?array $seçenekler = null,
    ?array $ek_seçenekler = null
): OpenSSLCertificateSigningRequest|false

ayırdedici_adlar ile sağlanan bilgilere dayalı olarak yeni bir sertifika imzalama isteği (CSR) üretir.

Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

Bağımsız Değişkenler

ayırdedici_adlar

Sertifika için kullanılacak ayırt edilebilir isim veya konu alanları.

gizli_anh

openssl_pkey_new() (veya başka bir openssl_pkey işlevi) ile üretilmiş bir gizli anahtar. Anahtar çiftinin genel anahtar parçası CSR'yi imzalamakta kullanılır.

seçenekler

İsteği ilklendirmek için öntanımlı olarak sisteminizdeki openssl.conf kullanılır. seçenekler dizisinin config_section_section anahtarında başka bir yapılandırma dosyası bölümü belirtebileceğiniz gibi config anahtarında başka bir openssl yapılandırma dosyasının yolunu da belirtebilirsiniz. seçenekler dizisi aşağıdaki anahtarları içerebilir. Bu anahtarlar openssl.conf dosyasındaki eşdeğerleri gibi davranırlar.

Yapılandırma Geçersizleştiricileri
seçenekler anahtarı Türü openssl.conf eşdeğeri Açıklama
digest_alg string default_md Özet yöntemi veya imza aşı, genellikle openssl_get_md_methods() yöntemlerinden biridir.
x509_extensions string x509_extensions Bir x509 sertifikası üretilirken kullanılacak eklentileri belirler.
req_extensions string req_extensions Bir CSR üretilirken kullanılacak eklentileri belirler.
private_key_bits int default_bits Bir gizli anahtarın kaç bitlik olacağını belirler.
private_key_type int none Üretilecek gizli anahtarın türünü belirler. Şu sabitlerden biri olabilir: OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA veya OPENSSL_KEYTYPE_EC. Öntanımlı değer OPENSSL_KEYTYPE_RSA'dır.
encrypt_key bool encrypt_key İhraç edilecek anahtar (bir parola ile) şifrelenececek mi?
encrypt_key_cipher int none şifreleme sabitlerinden biri.
curve_name string none openssl_get_curve_names() adlarından biri.
config string N/A Size özel openssl.conf dosyasının yolu.

ek_seçenekler

CSR için kullanılacak ek seçenekleri belirtmek için kullanılır. ayırdedici_adlar ve ek_seçenekler birer ilişkisel dizi olup anahtarları nesne kimliklerine (OID) dönüştürülerek isteğin ilgili parçasına uygulanır.

Dönen Değerler

Üretilen CSR, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 Başarı durumunda artık OpenSSLCertificateSigningRequest örneği dönüyor; evvelce OpenSSL X.509 CSR türünde bir özkaynak dönerdi.
8.0.0 gizli_anh artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce OpenSSL key türünde bir özkaynak kabul ederdi.
7.1.0 seçenekler artık curve_name seçeneğini destekliyor.

Örnekler

Örnek 1 - Öz-imzalı sertifika üretimi

<?php
// SSL sertifikaları için commonName genellikle sertifikanın kullanılacağı
// alanın ismidir. Fakat S/MIME sertifikalar için commonName, eposta adresi/
// sahibinin ismidir. location ve identification alanları ise güvenceye konu
// alan veya eposta sahibinin ismini içerir.
$dn = array(
"countryName" => "GB",
"stateOrProvinceName" => "Somerset",
"localityName" => "Glastonbury",
"organizationName" => "The Brain Room Limited",
"organizationalUnitName" => "PHP Documentation Team",
"commonName" => "Wez Furlong",
"emailAddress" => "wez@example.com"
);

// Yeni bir gizli/genel anahtar çifti üretelim
$privkey = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));

// Bir sertifika imzalama isteği üretelim
$csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));

// 365 günlük, öz-imzalı sertifika üretelim.
$x509 = openssl_csr_sign($csr, null, $privkey, $days=365, array('digest_alg' => 'sha256'));

// Öz-imzali sertifika, CSR ve gizli anahtarı ileride kullanım için saklayalım.
openssl_csr_export($csr, $csrout); var_dump($csrout);
openssl_x509_export($x509, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword"); var_dump($pkeyout);

// Oluşan hatalar varsa gösterelim
while (($e = openssl_error_string()) !== false) {
echo
$e . "\n";
}
?>

Örnek 2 - Öz-imzalı ECC sertifikası oluşrurmak (PHP 7.1.0 ve üstü)

<?php
$subject
= array(
"commonName" => "docs.php.net",
);

// Gizli/Genel Anahtar çiftini üretelim
$private_key = openssl_pkey_new(array(
"private_key_type" => OPENSSL_KEYTYPE_EC,
"curve_name" => 'prime256v1',
));

// Sertifika imzalama isteği (csr) üretelim
$csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384'));

// Öz-imzalı EC setifikası üretelim
$x509 = openssl_csr_sign($csr, null, $private_key, $days=365, array('digest_alg' => 'sha384'));
openssl_x509_export_to_file($x509, 'ecc-cert.pem');
openssl_pkey_export_to_file($private_key, 'ecc-private.key');
?>

Ayrıca Bakınız

  • openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir