Diese Erweiterung ist
EXPERIMENTELL. Das Verhalten dieser Erweiterung,
einschließlich der Funktionsnamen, und alles Andere was hier dokumentiert
ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien
Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko.
Dieses Modul nutzt die Funktionen von
OpenSSL zur Erzeugung und
Überprüfung von Signaturen und zum versiegeln (verschlüsseln) und
öffnen (entschlüsseln) von Daten.
PHP-4.0.4pl1 setzt OpenSSL >= 0.9.6 voraus, PHP-4.0.5 und
folgende funktionieren auch mit OpenSSL >= 0.9.5.
Anmerkung: Bitte beachten Sie, dass diese Extension immer noch als
experimentell einzustufen ist!
OpenSSL bietet viele Möglichkeiten die dieses Modul zum jetzigen
Zeitpunkt nicht unterstützt. Einige dieser Möglichkeiten werden
vielleicht in zukünftigen Versionen zur Verfügung stehen.
Ziemlich viele der OpenSSL Funktionen benötigen einen Schlüssel-
oder einen Zertifikatparameter. PHP 4.0.5 und frühere Versionen
müssen eine Schlüssel- oder Zertifikatsresource nutzen, die von
einer der openssl_get_xxx Funktionen zurückgegeben wird. Spätere
Versionen können eine der folgenden Methoden benutzen:
Zertifikate
Eine X.509 Resource die von
openssl_x509_read zurückgegeben wird.
Eine Zeichenkette mit dem Format
file://pfad/zu/cert.pem; die angegebene
Datei muss ein PEM verschlüsseltes Zertifikat enthalten.
Eine Zeichenkette die den Inhalt eines
Zertifikats enthält, PEM verschlüsselt.
Nur für öffentliche Schlüssel: eine X.509
Resource.
Eine Zeichenkette mit dem Format
file://pfad/zu/datei.pem - die angegebene
Datei muss ein PEM verschlüsseltes Zertifikat/privaten
Schlüssel enthalten (kann auch beides enthalten).
Eine Zeichenkette die den Inhalt eines
Zertifikats/Schlüssels enthält, PEM verschlüsselt.
Für private Schlüssel können Sie auch die
Syntax verwenden array($key, $passphrase).
$key repräsentiert einen Schlüssel, den Sie entweder mit der
Notation file:// oder dem textlichen Inhalt wie oben angeben.
$passphrase ist eine Zeichenfolge, die die Passphrase für den
privaten Schlüssel enthält.
Wenn Sie eine Funktion aufrufen, die eine Signatur/Zertifikat
überprüft, ist der Parameter cainfo ein Array,
das Datei- und Verzeichnisnamen enthält, die auf vertrauenswürdige
CA Dateien verweisen. Falls Sie ein Verzeichnis angeben, muss dies ein
korrekt geformtes gehashedes Verzeichnis sein, in der Art, wie es der Befehl
openssl verwenden würde.
Die S/MIME Funktionen nutzen Kennzeichen die sich dadurch auszeichnen, dass
sie ein Bitfeld benutzen, das einen oder mehrere der folgenden Werte
enthalten kann:
Tabelle 1. PKCS7 KONSTANTEN
Konstante
Beschreibung
PKCS7_TEXT
Fügt den text/plain Inhaltstyp Header einer
verschlüsselten/signierten Nachricht hinzu.
Wenn Sie entschlüsseln oder überprüfen, werden diese Header
von der Ausgabe entfernt - wenn die entschlüsselte oder
geprüfte Nachricht nicht dem MIME Typ text/plain entspricht,
tritt ein Fehler auf.
PKCS7_BINARY
Normalerweise wird die Nachricht in ein "kanonisches"
Format konvertiert, das effektiv CR und LF als Zeilende benutzt:
wie von der S/MIME Spezifikation gefordert.
Wird diese Option angegeben, findet keine Konvertierung statt.
Das kann sich als nützlich erweisen, wenn Sie mit binären Daten
umgehen, die nicht dem MIME Format entprechen.
PKCS7_NOINTERN
Wenn Sie eine Nachricht überprüfen, werden in der Nachricht
enthaltene Zertifikate (falls es welche gibt) nach dem
unterzeichnenden Zertifikat durchsucht. Mit dieser Option werden
nur Zertifikate benutzt, die mit dem Parameter
extracerts in der Funktion
openssl_pkcs7_verify() angegeben wurden.
Die mitgelieferten Zertifikate können aber dennoch als nicht
vertrauenswürdige CAs benutzt werden.
PKCS7_NOVERIFY
Keine Überprüfung des signierenden Zertifikats
einer signierten Nachricht.
PKCS7_NOCHAIN
Keine Verknüpfung der Überprüfung des Zertifikats mit den
Zertifikaten des Unterzeichners: das bedeutet, die Zertifikate in
der signierten Nachricht werden nicht als unvertrauenswürdige CAs
benutzt.
PKCS7_NOCERTS
Beim Signieren einer Nachricht wird normalerweise das
Zertifikat des Unterzeichnenden mit in die Nachricht
aufgenommen - mit dieser Option wird das Zertifikat nicht
mit aufgenommen. Diese Option verringert die Größe der signierten
Nachricht, aber der Überprüfende muss eine lokale Kopie des
Zertifikats vom Unterzeichnenden besitzen (zum Beispiel durch Angabe
des Parameters extracerts in der Funktion
openssl_pkcs7_verify()).
PKCS7_NOATTR
Beim Signieren einer Nachricht wird normalerweise eine Reihe
von Attributen mit angehängt. Diese enthalten die Zeit der Signierung
und die unterstützen symmetrischen Algorithmen. Mit dieser Option werden
diese Attribute nicht mit aufgenommen.
PKCS7_DETACHED
Beim Signieren einer Nachricht wird Klartext-Signierung
verwendet mit MIME Typ multipart/signed. Das ist der Standard,
wenn Sie keinen optionalen Parameter flags
an die Funktion openssl_pkcs7_sign() übergeben.
Wenn Sie diese Option ausschalten wird die Nachricht mit einer
undurchsichtigen Signatur unterzeichnet. Dieses Verhalten ist robuster
gegenüber der Übersetzung durch Mail-Relays, kann aber nicht mit
Mailprogrammen gelesen werden, die nicht den S/Mime Standard
unterstützen.
PKCS7_NOSIGS
Kein Versuch und keine Überprüfung der Signaturen einer
Nachricht.
Anmerkung: Diese Konstanten wurden in 4.0.6 hinzugefügt.
Inhaltsverzeichnis
openssl_csr_export -- Exportiert ein CSR in eine Datei oder eine Variable