PHP Handbuch
Zurück |  | Nach vorne

# openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5)

openssl_csr_new -- Erzeugt einen CSR

## Beschreibung

bool openssl_csr_new ( array 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.

`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.

`extraattribs` 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.

> Anmerkung: Damit diese Funktion korrekt arbeiten kann, benötigen Sie eine installierte, gültige Konfigurationsdatei `openssl.cnf`. Für weitere Informationen beachten Sie bitte die Hinweise im Abschnitt Installation.

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`

Tabelle 1. Überschreiben der Konfiguration

`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 | string | default_bits | Bestimmt wieviele Bits verwendet werden, um einen privaten Schlüssel zu erzeugen.
private_key_type | integer | none | 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?

Gibt bei Erfolg `TRUE` zurück, im Fehlerfall `FALSE`.

Beispiel 1. openssl_csr_new() Beispiel - 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"; } ?>`

Zurück | Zum Anfang | Nach vorne
openssl_csr_export | Nach oben | openssl_csr_sign