(PHP 4 >= 4.2.0, PHP 5)
openssl_csr_new — Bir sertifika imzalama isteği (CSR) üretir
dn ile belirtilen, sertifika için kullanılacak ayırt edilebilir isim ile sağlanan bilgiye dayanarak 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ınız.
Sertifika için kullanılacak ayırt edilebilir isim.
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.
İsteği ilklendirmek için öntanımlı olarak sisteminizdeki openssl.conf kullanılır. ayarlar 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. ayarlar dizisi aşağıdaki anahtarları içerebilir. Bu anahtarlar openssl.conf dosyasındaki eşdeğerleri gibi davranırlar.
ayarlar anahtarı | Türü | openssl.conf eşdeğeri | Açıklama |
---|---|---|---|
digest_alg | string | default_md | Kullanılacak özet yöntemini belirler. |
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 | integer | default_bits | Bir gizli anahtarın kaç bitlik olacağını belirler. |
private_key_type | integer | none | Üretilecek gizli anahtarın türünü belirler. Şu sabitlerden biri olabilir: OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA. Öntanımlı değer OPENSSL_KEYTYPE_RSA olup şimdilik desteklenen tek anahtar türüdür. |
encrypt_key | boolean | encrypt_key | İhraç edilecek anahtar (bir parola ile) şifrelenececek mi? |
CSR için kullanılacak ek seçenekleri belirtmek için kullanılır. dn 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'yi döndürür.
Örnek 1 - Öz-imzalı sertifika üretimi
<?php
// Sertifikada ayırt edilebilir isim için kullanılacak veriyi oluşturalım.
// Bu anahtar değerlerinde, isminiz, şirketiniz ve hatta sertifikanın adına
// üretildiği şirketin veya şahsın isminin bulunmasını sağlayın.
// SSL sertifikaları için commonName genellikle sertifikayı kullanacak
// alan ismidir. Fakat S/MIME sertifikalar için commonName, sertifikayı
// kullanacak şahsın ismidir.
$dn = array(
"countryName" => "UK",
"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();
// Bir sertifika imzalama isteği üretelim
$csr = openssl_csr_new($dn, $privkey);
// CA'nız isteği yerine getirene kadar bir öz-imzalı sertifika üretelim.
// Bu sertifika 365 günlük olsun.
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
// (Sertifikanın kullanılacağı yere bağlı olarak) posta istemcisine,
// posta sunucusuna veya HTTP sunucusuna kurulacak öz-imzali sertifikayı,
// CSR'yi ve gizli anahtarı alalım. Örnekte bunlar değişkenlere atanmıştır.
// Fakat siz bunları doğrudan dosyalarına kaydedebilirsiniz.
// CSR genellikle "gerçek" sertifikayı üretecek CA'ya gönderilir.
openssl_csr_export($csr, $csrout); var_dump($csrout);
openssl_x509_export($sscert, $certout); 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";
}
?>