PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<ociwritelobtofileopenssl_csr_export_to_file>
view the version of this page
Last updated: Sat, 19 Apr 2003

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

KonstanteBeschreibung
PKCS7_TEXTF�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_BINARYNormalerweise 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_NOINTERNWenn 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_NOVERIFYKeine �berpr�fung des signierenden Zertifikats einer signierten Nachricht.
PKCS7_NOCHAINKeine 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_NOCERTSBeim 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_NOATTRBeim 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_DETACHEDBeim 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_NOSIGSKein 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


User Contributed Notes
OpenSSL Funktionen
add a note
webmaster at jukkis dot net
06-Apr-2001 10:19

I had a hard time to make OpenSSL extension to load on Win98+Apache 1.3.17+Php4.0.4pl1.
Always complained about missing extension.

Eventually I found this page:

and there was the magic: One seems to need the files "libeay32.dll" and "ssleay32.dll" in system32 directory.

You can get them from
download an apache .zip file, for example "Apache_1.3.19-Mod_SSL_2.8.2-OpenSSL_0.9.6-WIN32.zip", extract it, and copy the mentioned files from that Apache directory.

At least phpinfo() says OpenSSL as loaded extension. Now I can start to
play with it :)

-jukkis
-www.jukkis.net

buzz77 at gmx dot net
02-Jun-2001 08:05

PHP 4.0.5 and OpenSSL

if you got an error message where php complains about missing dlls, copy all files from /php/dll directory to your windows/system(32) directory.
If it still can't load because the MSVCR70.DLL is missing (not provided with the release found on this page), go to this link, download it and place it in windows/system(32).


alistair at lgeezer dot net
30-Jan-2003 03:37

Oops! That's not quite the entire truth. 4.3.0 and 0.9.7 do work together, <= 4.2.1 and 0.9.7 don't. Sorry about that :-)
adolfo dot garcia at NOSPAM dot uservers dot net
07-May-2003 09:59

If you are having problems compiling php with openssl under redhat 9, because it complains about the kerberos libraries and include headers, try the following:

1. Make sure you have the kerb5-devel and krb5-libs rpms installed.
2. Symlink the following files as follows:

 ln -s /usr/kerberos/include/com_err.h /usr/include/
 ln -s /usr/kerberos/include/profile.h /usr/include/
 ln -s /usr/kerberos/include/krb5.h /usr/include/

Then configure --with-kerberos and --with-openssl and it should work.

This is the error that appears whe running make (included so that the search engine can find it):

/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory

add a note

<ociwritelobtofileopenssl_csr_export_to_file>
 Last updated: Sat, 19 Apr 2003
show source | credits | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by: /
Last updated: Wed May 14 01:12:44 2003 CEST