CIX. OpenSSL Funktionen
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. 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.
Bevor Sie die Openssl-Funktionen nutzen können, müssen Sie das
OpenSSL Paket installieren.
PHP zwischen 4.0.5 und 4.3.1 funktionieren mit OpenSSL >= 0.9.5.
Andere Versionen (PHP <=4.0.4pl1 and >= 4.3.2) setzen OpenSSL >=
0.9.6 voraus.
| Warnung |
Es wird dringnd empfohlen die aktuellste OpenSSL Version zu verwenden,
anderenfalls könnte Ihr Webserver anfällig für Attacken sein.
|
Um Openssl mit PHP nutzen zu können, müssen Sie PHP mit der
Option --with-openssl[=DIR] übersetzen.
Hinnweis für Win32 Benutzer:
Um dieses Modul unter Windows benutzen zu können, müssen Sie die Datei
libeay32.dll vom DLL Ordner Ihrer PHP/Win32
Binärdistribution in den SYSTEM32 Ordner von Windows kopieren.(Zum
Beispiel nach: C:\WINNT\SYSTEM32
oder C:\WINDOWS\SYSTEM32).
Wenn Sie vorhaben, Schlüssel erzeugende und Zertifikats signierende
Funktionen zu benutzen, müssen Sie eine gültige Konfigurationsdatei für
OpenSSL, openssl.cnf, installieren. Ab PHP 4.3.0
finden Sie bei der win32 Binärdistribution im Ordner
openssl eine
Beispielkonfigurationsdatei, die Sie benutzen können. Falls Sie PHP 4.2.0
oder eine höhere Version benutzen und diese Datei in Ihrer Distribution
fehlt, finden Sie diese Datei auf der
OpenSSL Homepage, oder Sie laden sich
PHP 4.3.0 herunter und verwenden die in diesem Paket enthaltene Datei.
Hinnweis für Win32 Benutzer:
PHP verwendet folgende Logik um die Konfigurationsdatei
openssl.cnf zu finden:
Die Umgebungsvariable OPENSSL_CONF wird, falls gesetzt,
als Pfad zur Konfigurationsdatei benutzt (den Dateinamen mit
eingeschlossen).
Die Umgebungsvariable SSLEAY_CONF wird, falls gesetzt,
als Pfad zur Konfigurationsdatei benutzt (den Dateinamen mit
eingeschlossen).
PHP sucht die Datei openssl.cnf an dem Ort, der
bei der Kompilierung der openssl DLL als Speicherort für Zertifikate
angegeben wurde. Üblicherweise ist der Standarddateiname
c:\usr\local\ssl\openssl.cnf.
Damit diese Datei gefunden wird, müsssen Sie sich bei der Installation
entscheiden, entweder die Konfigurationsdatei unter
c:\usr\local\ssl\openssl.cnf anzulegen, oder diese Datei
an einem anderen Ort abzulegen und Umgebungsvariablen zu benutzen
(möglicherweise auf Basis verschiedener Virtual-Host Konfigurationen).
Bei Funktionen, die diese Konfigurationsdatei benötigen, ist es möglich,
durch die Angabe des Parameters configargs
den Standardpfad zu dieser Datei in einem Skript zu überschreiben.
Diese Erweiterung definiert keine Konfigurationseinstellungen in der php.ini.
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:
Wenn Sie eine Funktion aufrufen, die eine Signatur/ein 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 gehashdes Verzeichnis sein, in der Art, wie es der Befehl
openssl verwenden würde.
Folgende Konstanten werden von dieser
Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder
statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Die S/MIME Funktionen nutzen Flags 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 Inhaltstyp Header text/plain einer
verschlüsselten/signierten Nachricht hinzu. Wenn Sie entschlüsseln
oder überprüfen, werden diese Header von der Ausgabe entfernt.
Entspricht die entschlüsselte oder geprüfte Nachricht nicht dem MIME
Typ text/plain, 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 es mit binären Daten zu tun haben, 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 nicht vertrauenswü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 dem 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.
|