(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');
?>