(PHP 4 >= 4.2.0, PHP 5, PHP 7)
openssl_csr_sign — Signiert einen CSR mit einem anderen Zertifikat (oder sich selbst) und generiert ein Zertifikat
$csr
, mixed $cacert
, mixed $priv_key
, int $days
[, array $configargs
[, int $serial
]] )openssl_csr_sign() erzeugt eine x509 Zertifikatressource aus dem übergebenen CSR.
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.
csr
Ein zuvor mit openssl_csr_new() erzeugter CSR. Es kann sich aber auch um den Pfad zu einer PEM-kodierten CSR-Datei in der Form file://path/to/csr handeln oder einen String wie von openssl_csr_export() zurückgegeben.
cacert
Das generierte Zertifikat wird mit cacert
signiert.
Falls Sie hier NULL
angeben wird ein selbstsigniertes Zertifikat erstellt.
priv_key
priv_key
ist der zu cacert
gehörende private Schlüssel.
days
days
Die Gültigkeitsdauer des Zertifikats, in Tagen.
configargs
Mit configargs
können Sie die Signierung des CSR
feiner abstimmen.
Für weitere Informationen lesen Sie bitte openssl_csr_new().
serial
Eine optionale Seriennummer für das ausgestellte Zertifikat. Wenn nicht abgegeben wird der Standardwert 0 verwendet.
Gibt bei Erfolg eine x509 Zertifikat-Ressource zurück, FALSE
bei einem
Fehler.
Version | Beschreibung |
---|---|
4.3.3 |
Der Parameter serial wurde hinzugefügt.
|
Beispiel #1 openssl_csr_sign() example - signing a CSR (how to implement your own CA)
<?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, $privkey, 365);
// 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";
}
?>