PHP Handbuch
Zurück |  | Weiter

# 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 | Weiter
openssl_csr_get_subject | Nach oben | openssl_csr_sign