Forum und email

openssl_csr_sign

(PHP 4 >= 4.2.0, PHP 5)

openssl_csr_sign — Signiert einen CSR mit einem anderen Zertifikat (oder sich selbst) und generiert ein Zertifikat

Beschreibung

resource openssl_csr_sign ( mixed $csr , mixed $cacert , mixed $priv_key , int $days [, array $configargs [, int $serial ]] )

openssl_csr_sign() erzeugt eine x509 Zertifikatressource von csr , der vorher mit openssl_csr_new() erzeugt wurde. Sie können mit csr aber auch einen Pfad zu einer PEM kodierten CSR Datei angeben: file://path/to/csr, oder einer mit Hilfe von openssl_csr_export()exportierten Zeichenkette. Das generierte Zertifikat wird mit cacert signiert. Falls Sie für cacert NULL angeben, wird das generierte Zertifikat ein selbstsigniertes Zertifikat sein. priv_key ist der private Schlüssel, der zu cacert gehört. Mit days legen Sie die Gültigkeitsdauer des generierten Zertifikats in Tagen fest. Mit configargs können Sie die Signierung des CSR feiner abstimmen. Für weterführende Informationen über die Verwendung von configargs lesen Sie bitte bei der Dokumentation zu openssl_csr_new() nach. Seit PHP 4.3.3 können Sie die Seriennummer des ausgestellten Zertifikats mit serial angeben. In früheren Versionen war dieser Wert immer 0.

Gibt bei Erfolg eine x509 Zertifikatressource zurück, FALSE bei einem Fehler.

Hinweis: 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.

Example#1 openssl_csr_sign() Beispiel - signieren eines CSR (wie Sie ihre eigene CA implementieren)

<?php
// Annahme: dieses Skript erhält einen CSR, der auf einer anderen Seite in
// eine Textarea eingegeben wurde.
$csrdata $_POST["CSR"];

// Wir werden die Anfrage mit unserem eigenen ""certificate authority"
// Zertifikat signieren. Sie können jedes beliebige Zertifikat verwenden, um
// ein anderes zu signieren. Aber das Ganze ist ziemlich nutzlos, solange die
// Software/Benutzer, die dieses neu signierte Zertifikat nutzen werden, dem
// signierenden Zertifikat 

// Wir brauchen unser CA Zertifikat und dessen privaten Schlüssel
$cacert "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key""your_ca_key_passphrase");

$userscert openssl_csr_sign($csrdata$cacert$privkey365);

// Jetzt zeigem wir das generierte Zertifikat an, damit die Benutzer es
// kopieren und in ihre lokale Konfiguration einfügen können (wie z.B. eine
// Datei, die das Zertifikat für ihren SSL Server enthalten soll.
openssl_x509_export($usercert$certout);
echo 
$certout;

// Anzeigen der möglichen aufgetretenen Fehler
while (($e openssl_error_string()) !== false) {
    echo 
$e "\n";
}
?>