openssl csr new()
openssl_csr_new
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
openssl_csr_new — Genererar en CSR
Beskrivning
openssl_csr_new(array $distinguished_names, #[\SensitiveParameter] ?OpenSSLAsymmetricKey &$private_key, ?array $options = null, ?array $extra_attributes = null): OpenSSLCertificateSigningRequest|bool
Funktionen `openssl_csr_new()` genererar en ny Certificate Signing Request (CSR) baserat på informationen som ges i distinguished_names.
Notera: För att denna funktion ska fungera korrekt måste en giltig openssl.cnf vara installerad. Se installationssektionen för mer information.
Parametrar
distinguished_names De Distinguished Name- eller subject-fält som ska användas i certifikatet.
private_key private_key bör vara satt till en privat nyckel som tidigare genererats med openssl_pkey_new() (eller erhållits från någon annan funktion i openssl_pkey-familjen), eller en null-variabel. Om dess värde är null genereras en ny privat nyckel baserat på de angivna inställningarna och tilldelas variabeln. Den motsvarande publika delen av nyckeln används för att signera CSR:n.
options Som standard används informationen i din systems openssl.conf för att initiera förfrågan; du kan specificera en sektion från konfigurationsfilen genom att sätta nyckeln config_section_section i options. Du kan också specificera en alternativ OpenSSL-konfigurationsfil genom att sätta värdet för config till sökvägen för den fil du vill använda. Följande nycklar i options beter sig som deras motsvarigheter i openssl.conf, som listat nedan:
options-nyckel | Typ | Motsvarande openssl.conf | Beskrivning |
---|---|---|---|
digest_alg | string | default_md | Digestmetod eller signaturhash, vanligtvis en av openssl_get_md_methods() |
x509_extensions | string | x509_extensions | Väljer vilka tillägg som ska användas vid skapandet av ett x509-certifikat |
req_extensions | string | req_extensions | Väljer vilka tillägg som ska användas vid skapandet av en CSR |
private_key_bits | int | default_bits | Anger antalet bitar som ska användas för att generera en privat nyckel |
private_key_type | int | none | Anger typen av privat nyckel som ska skapas. Kan vara en av OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA eller OPENSSL_KEYTYPE_EC. Standardvärde är OPENSSL_KEYTYPE_RSA. |
encrypt_key | bool | encrypt_key | Ska en exporterad nyckel (med lösenfras) krypteras? |
encrypt_key_cipher | int | none | En av cipher-konstanterna. |
curve_name | string | none | En av openssl_get_curve_names(). |
config | string | N/A | Sökväg till din alternativa openssl.conf-fil. |
extra_attributes extra_attributes används för att specificera ytterligare konfigurationsalternativ för CSR:n. Både distinguished_names och extra_attributes är associativa arrayer, vars nycklar konverteras till OID:er och tillämpas på motsvarande del av förfrågan.
Returvärden
Returnerar CSR vid framgång, true om CSR-skapandet lyckas men signeringen misslyckas, eller false vid misslyckande.
Ändringslogg
Version | Beskrivning |
---|---|
8.0.0 | Vid framgång returnerar denna funktion nu en instans av OpenSSLCertificateSigningRequest; tidigare returnerades en resurs av typen OpenSSL X.509 CSR. |
8.0.0 | private_key accepterar nu en instans av OpenSSLAsymmetricKey; tidigare accepterades en resurs av typen OpenSSL key. |
7.1.0 | options stöder nu också curve_name. |
Exempel
Exempel #1 Skapar ett självsignerat certifikat
<?php // För SSL-servercertifikat är commonName domännamnet som ska säkras $dn = array( "countryName" => "GB", "stateOrProvinceName" => "Somerset", "localityName" => "Glastonbury", "organizationName" => "The Brain Room Limited", "organizationalUnitName" => "PHP Documentation Team", "commonName" => "Wez Furlong", "emailAddress" => "wez@example.com" ); // Generera ett nytt privat (och publikt) nyckelpar $privkey = openssl_pkey_new(array( "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, )); // Generera en certificate signing request $csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256')); // Generera ett självsignerat certifikat, giltigt i 365 dagar $x509 = openssl_csr_sign($csr, null, $privkey, $days=365, array('digest_alg' => 'sha256')); // Spara din privata nyckel, CSR och självsignerade certifikat för framtida användning openssl_csr_export($csr, $csrout) and var_dump($csrout); openssl_x509_export($x509, $certout) and var_dump($certout); openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout); // Visa eventuella fel som uppstod while (($e = openssl_error_string()) !== false) { echo $e . "\n"; } ?>
Exempel #2 Skapar ett självsignerat ECC-certifikat (från och med PHP 7.1.0)
<?php $subject = array( "commonName" => "docs.php.net", ); // Generera ett nytt privat (och publikt) nyckelpar $private_key = openssl_pkey_new(array( "private_key_type" => OPENSSL_KEYTYPE_EC, "curve_name" => 'prime256v1', )); // Generera en certificate signing request $csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384')); // Generera ett självsignerat EC-certifikat $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'); ?>
Se även
- openssl_csr_sign() - Signerar en CSR med ett annat certifikat (eller sig själv) och genererar ett certifikat
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-csr-new.php PHP Funktioner Funktionsreferens OpenSSL-funktioner
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.