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ğeriAçıklama
digest_algstringdefault_mdÖzet yöntemi veya imza aşı, genellikle openssl_get_md_methods() yöntemlerinden biridir.
x509_extensionsstringx509_extensionsBir x509 sertifikası üretilirken kullanılacak eklentileri belirler.
req_extensionsstringreq_extensionsBir CSR üretilirken kullanılacak eklentileri belirler.
private_key_bitsintdefault_bitsBir gizli anahtarın kaç bitlik olacağını belirler.
private_key_typeintnoneÜ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_keyboolencrypt_keyİhraç edilecek anahtar (bir parola ile) şifrelenececek mi?
encrypt_key_cipherintnoneşifreleme sabitlerinden biri.
curve_namestringnoneopenssl_get_curve_names() adlarından biri.
configstringN/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.0gizli_anh artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce OpenSSL key türünde bir özkaynak kabul ederdi.
7.1.0seç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
To Top