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.
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.
Beispiel 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
// We will sign the request using our own "certificate authority" // certificate. You can use any certificate to sign another, but // the process is worthless unless the signing certificate is trusted // by the software/users that will deal with the newly signed certificate
// 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"; } ?>
|
|