openssl csr new()

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

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.