(PHP 4 >= 4.2.0, PHP 5, PHP 7)
openssl_csr_new — Erzeugt einen CSR
$dn
, resource &$privkey
[, array $configargs
[, array $extraattribs
]] )
openssl_csr_new() erzeugt einen neuen CSR
(Zertifikatssignierungsanfrage) basierend auf den Informationen, die mit
dem Parameter dn
angegeben werden. Dieser
bestimmt den Distinguished Name, der im Zertifikat benutzt werden soll.
Hinweis: Die ordnungsgemäße Ausführung dieser Funktion setzt die Installation einer gültigen openssl.cnf-Datei voraus. Mehr Information hierzu finden sie im Installationsabschnitt.
dn
Der Distinguished Name der im Zertifikat genutzt werden soll
privkey
privkey
sollte auf einen privaten Schlüssel
zeigen, der vorher mit openssl_pkey_new() erzeugt
wurde (oder den Sie auf andere Weise von der Familie der openssl_pkey
Funktionen erhalten haben). Der entsprechende öffentliche Teil des
Schlüssels wird benutzt um den CSR zu signieren.
configargs
configargs
können Sie benutzen um zusätzliche
Konfigurationsoptionen für den CSR anzugeben. Sowohl
dn
als auch extraattribs
sind assoziative Arrays, deren Schlüssel zu OIDs konvertiert und auf den
relevanten Teil der Anfrage angewendet werden.
Im Standard werden die Informationen für die Anfrage aus der
openssl.conf ihres Systems benutzt. Sie können einen
Konfigurationsabsschnitt mit dem Schlüssel
config_section_section des Arrays
configargs
setzen. Außerdem haben Sie die
Möglichkeit eine alternative openssl Konfigurationsdatei anzugeben, indem
Sie den Wert des Schlüssels config auf den Pfad zu der
Datei setzen, die Sie benutzen möchten. Die unten in der Tabelle
aufgeführten Schlüssel in configargs
, falls Sie
diese definiert haben, verhalten sich genau gleich wie die entsprechenden
Werte in der openssl.conf
configargs Schlüssel |
Typ | openssl.conf Entsprechung | Beschreibung |
---|---|---|---|
digest_alg | string | default_md | Bestimmt welche digest Methode benutzt wird |
x509_extensions | string | x509_extensions | Bestimmt welche Erweiterung benutzt werden soll, wenn ein x509 Zertifikat erzeugt werden soll. |
req_extensions | string | req_extensions | Bestimmt welche Erweiterung benutzt werden soll, wenn eine Zertifikatssignierungsanfrage (CSR) erzeugt werden soll. |
private_key_bits | integer | default_bits | Bestimmt wieviele Bits verwendet werden, um einen privaten Schlüssel zu erzeugen. |
private_key_type | integer | keine |
Bestimmt den Typ des privaten Schlüssels der erzeugt werden soll.
Der Typ kann einer der folgenden sein:
OPENSSL_KEYTYPE_DSA ,
OPENSSL_KEYTYPE_DH oder
OPENSSL_KEYTYPE_RSA . Der Standardwert ist
OPENSSL_KEYTYPE_RSA , momentan ist das der
einzige Schlüsseltyp, der unterstützt wird.
|
encrypt_key | boolean | encrypt_key | Soll ein exportiertet Schlüssel (mit Passphrase) verschlüsselt werden? |
encrypt_key_cipher | integer | keine | Eine der Ziffer-Konstanten. |
Gibt den CSR zurück.
Beispiel #1 Erzeugen eines selbstsignierten Zertifikats
<?php
// Angabe der Daten für den distinguished name, der in dem Zertifikat benutzt
// wird. Sie müssen die Werte dieser Schlüssel so anpassen, dass diese ihrem
// Namen und Firma entsprechen, oder um präziser zu sein, den Namen und die
// Firma der Person/Seite angeben, für die Sie das Zertifikat erzeugen.
// Für SSL Zertifikate entspricht der commonName gewöhnlich dem Domainnamen,
// für den das Zertifikat benutzt werden soll, aber bei S/MIME Zertifikaten
// entspricht der commonName dem Namen der Person, die das Zertifikat nutzen
// möchte.
$dn = array(
"countryName" => "UK",
"stateOrProvinceName" => "Somerset",
"localityName" => "Glastonbury",
"organizationName" => "The Brain Room Limited",
"organizationalUnitName" => "PHP Documentation Team",
"commonName" => "Wez Furlong",
"emailAddress" => "wez@example.com"
);
// Erzeugen eines neuen privaten (und öffentlichen) Schlüsselpaars
$privkey = openssl_pkey_new();
// Erzeugen einer Zertifikatssignierungsanfrage
$csr = openssl_csr_new($dn, $privkey);
// Gewöhnlicherweise möchten Sie zu diesem Zeitpunkt ein selbstsigniertes
// Zertifikat erzeugen, das Sie benutzten können, bis ihre CA ihre Anfrage
// im positiven Sinne bearbeitet hat.
// Erzeugen eines selbstsignierten Zertifikts, das für die Dauer von 365 Tagen
// gültig ist.
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
// Jetzt möchten Sie ihren privaten Schlüssel, ihren CSR und das
// selbstsignierte Zertifikat sichern, damit Sie dieses, abhängig vom
// beabsichtigten Verwendungszweck, auf ihrem Web-, Mailserver oder
// in ihrem Mailprogramm installieren können.
// Dieses Beispiel zeigt ihnen, wie Sie diese Dinge in Variablen abspeichern,
// aber genauso können Sie die Informationen direkt in Dateien speichern.
// Typischerweise schicken Sie den CSR an Ihre CA, die daraufhin diese Anfrage
// bearbeitet und Sie mit einem "richtigen" Zertifikat ausstattet.
openssl_csr_export($csr, $csrout) and var_dump($csrout);;
openssl_x509_export($sscert, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);
// Anzeigen der möglichen aufgetretenen Fehler
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>