(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_csr_new — Bir sertifika imzalama isteği (CSR) üretir
$ayırdedici_adlar
,&$gizli_anh
,$seçenekler
= null
,$ek_seçenekler
= null
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.
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.
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.
Üretilen CSR, başarısızlık durumunda false
döner.
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. |
Ö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');
?>