LXXII. OpenSSL Funktionen

Warnung

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 .

Einführung

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 .

Anforderungen

Bevor Sie die Openssl-Funktionen nutzen können , müssen Sie das OpenSSL Paket installieren . PHP-4.0.4pl1 setzt OpenSSL = 0.9.6 voraus , PHP-4.0.5 und folgende funktionieren auch mit OpenSSL = 0.9.5 .

Installation

Um Openssl mit PHP nutzen zu können , müssen Sie PHP mit der Option --with-openssl[ =DIR ] übersetzen .

Laufzeit Konfiguration

Diese Erweiterung definiert keine Konfigurationseinstellungen in der php.ini .

Resource Typen

Schlüssel/Zertifikat Parameter

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

    1. Eine X.509 Resource die von openssl_x509_read zurückgegeben wird .

    2. Eine Zeichenkette mit dem Format file : / /pfad / zu / cert.pem ; die angegebene Datei muss ein PEM verschlüsseltes Zertifikat enthalten .

    3. Eine Zeichenkette die den Inhalt eines Zertifikats enthält , PEM verschlüsselt .



  • Öffentliche / Private Schlüssel

    1. Eine Schlüsselresource die von openssl_get_publickey( ) oder openssl_get_privatekey( ) zurückgegeben wird .

    2. Nur für öffentliche Schlüssel : eine X.509 Resource .

    3. 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 ) .

    4. Eine Zeichenkette die den Inhalt eines Zertifikats / Schlüssels enthält , PEM verschlüsselt .

    5. 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 .





Zertifikat Nachweis

Wenn Sie eine Funktion aufrufen , die eine Signatur / Zertifikat überprüft , ist der Parameter cainfo 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 gehashdes Verzeichnis sein , in der Art , wie es der Befehl openssl verwenden würde .

Vordefinierte Konstanten

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 .

X509_PURPOSE_SSL_CLIENT ( integer )

X509_PURPOSE_SSL_SERVER ( integer )

X509_PURPOSE_NS_SSL_SERVER ( integer )

X509_PURPOSE_SMIME_SIGN ( integer )

X509_PURPOSE_SMIME_ENCRYPT ( integer )

X509_PURPOSE_CRL_SIGN ( integer )

X509_PURPOSE_ANY ( integer )

OPENSSL_PKCS1_PADDING ( integer )

OPENSSL_SSLV23_PADDING ( integer )

OPENSSL_NO_PADDING ( integer )

OPENSSL_PKCS1_OAEP_PADDING ( integer )

OPENSSL_KEYTYPE_RSA ( integer )

OPENSSL_KEYTYPE_DSA ( integer )

OPENSSL_KEYTYPE_DH ( integer )

PKCS7 Kennzeichen/Konstanten

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
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 .
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 .
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 .
Keine Überprüfung des signierenden Zertifikats einer signierten Nachricht .
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 .
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( ) ) .
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 .
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( ) 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 .
Kein Versuch und keine Überprüfung der Signaturen einer Nachricht .


Anmerkung : Diese Konstanten wurden in 4.0.6 hinzugefügt .

Inhaltsverzeichnis
openssl_csr_export_to_file -- Exportiert ein CSR in eine Datei
openssl_csr_export -- Exportiert ein CSR in eine Datei oder eine Variable
openssl_csr_new -- Erzeugt einen privaten Schlüssesl und ein CSR
openssl_csr_sign -- Signiert ein Zertifikat mit einem andern CERT
openssl_error_string -- Liefert eine OpenSSL Fehlermeldung
openssl_free_key -- Freigabe einer Schlüsselressource
openssl_get_privatekey -- Bereitet einen PEM formatierten privaten Schlüssel zum Gebrauch vor
openssl_get_publickey -- Extrahiert einen öffentlichen Schlüssel aus einem Zertifikat und bereitet ihn für den Gebrauch vor
openssl_open -- Öffnet versiegelte Daten
openssl_pkcs7_decrypt -- Entschlüssen einer S/MIME verschlüsselten Nachricht
openssl_pkcs7_encrypt -- Verschlüsseln einer S/MIME Nachricht
openssl_pkcs7_sign -- Unterzeichnen einer S/MIME Nachricht
openssl_pkcs7_verify -- Überprüft die Unterschrift einer mit S/MIME unterschriebenen Nachricht
openssl_pkey_export_to_file -- Liefert eine exportierbare Representation eines Schlüssels in einer Datei
openssl_pkey_export -- Liefert eine exportierbare Representation eines Schlüssels in einem String oder einer Datei
openssl_pkey_get_private -- Get a private key
openssl_pkey_get_public -- Extract public key from certificate and prepare it for use
openssl_pkey_new -- Erzeugt einen neuen privaten Schlüssel
openssl_private_decrypt -- Entschlüsselt Daten mit einem privaten Schlüssel
openssl_private_encrypt -- Verschlüsselt Daten mit einem privaten Schlüssel
openssl_public_decrypt -- Entschlüsselt Daten mit einem öffentlichen Schlüssel
openssl_public_encrypt -- Verschlüsselt Daten mit einem öffentlichen Schlüssel
openssl_seal -- Versiegelt (verschlüsselt) Daten
openssl_sign -- Erzeugen einer Unterschrift
openssl_verify -- Überprüft eine Unterschrift
openssl_x509_check_private_key -- Überprüft, ob ein privater Schlüssel zu einem CERT passt
openssl_x509_checkpurpose -- Überprüft ob ein Zertifikat für einen bestimmten Zweck benutzt werden kann
openssl_x509_export_to_file -- Exportiert ein CERT in eine Datei oder eine Variable
openssl_x509_export -- Exportiert ein CERT in eine Datei oder eine Variable
openssl_x509_free -- Freigabe einer Zertifikats Resource
openssl_x509_parse -- Analyse eines X509 Zertifikats und Rückgabe der Information in einem Array
openssl_x509_read -- Analysiert ein X.509 Zertitifikat und gibt eine Resource-Kennung zurück