PHP: OpenSSL funkce - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<ociwritetemporarylobopenssl_csr_export_to_file>
view the version of this page
Last updated: Thu, 15 Jul 2004

LXXVIII. OpenSSL funkce

�vod

Toto roz���en� vyu��v� funkce pro tvorbu a ov��ov�n� podpis� a pe�et�n� (k�dov�n�) a otv�r�n� (dek�dov�n�) dat. OpenSSL nab�z� mnoho vlastnost�, kter� tato extenze v sou�asnosti nepodporuje. N�kter� z nich mohou b�t v budoucnu p�id�ny.

Po�adavky

Abyste mohli pou��vat tyto funkce, mus�te nainstalovat . PHP-4.0.4pl1 pot�ebuje OpenSSL >= 0.9.6, ale PHP-4.0.5 a vy��� budou pracovat i s OpenSSL >= 0.9.5.

Instalace

Abyste v PHP mohli pou��vat funkce OpenSSL, mus�te PHP zkompilovat s volbou --with-openssl[=DIR].

Pozn�mka pro u�ivatele Win32: Aby toto roz���en� fungovalo ve Windows, mus�te zkop�rovat soubor libeay32.dll z adres��e DLL Win32 distribuce do adres��e SYSTEM32. (Nap�.: C:\WINNT\SYSTEM32 nebo C:\WINDOWS\SYSTEM32)

Nav�c, pokud m�te v �myslu pou��vat funkce generov�n� kl��� a podepisov�n� certifik�t�, mus�te na v� syst�m nainstalovat platn� openssl.cnf. Do PHP 4.3.0 jsme p�ipojili uk�zkov� konfigura�n� soubor do adres��e openssl Win32 distribuce. Pokud pou��v�te 4.2.0 nebo nov�j�� a tento soubor v�m chyb�, m��ete ho st�hnout z nebo st�hn�te PHP 4.3.0 a pou�ijte konfigura�n� souboru z n�j.

Pozn�mka pro u�ivatele Win32: PHP bude hledat openssl.cnf t�mto postupem:

  • Prom�nn� prost�ed� OPENSSL_CONF, pokud je nastavena, bude pou�ita jako cesta (v�etn� n�zvu souboru) konfigura�n�ho souboru.

  • Prom�nn� prost�ed� SSLEAY_CONF, pokud je nastavena, bude pou�ita jako cesta (v�etn� n�zvu souboru) konfigura�n�ho souboru.

  • Bude se p�edpokl�dat, �e soubor openssl.cnf bude nalezen ve v�choz� oblasti certifik�t�, kter� byla zkonfigurov�na p�i kompilaci DLL knihovny openssl. To obvykle znamen�, �e v�choz� n�zev souboru je c:\usr\local\ssl\openssl.cnf.

Ve sv� instalaci se mus�te rozhodnout, zda nainstalujete konfigura�n� soubor do c:\usr\local\ssl\openssl.cnf nebo zda ho nainstalujete n�kam jinam a pro nalezen� konfigura�n�ho souboru pou�ijete prom�nnou prost�ed� (pravd�podpobn� jako per-virtual-host). Vemte na v�dom�, �e v�choz� cestu lze zm�nit v parametru configargs funkc�, kter� pot�ebuj� konfigura�n� soubor.

Konfigurace b�hu

Toto roz���en� nem� definov�no ��dn� konfigura�n� direktivy.

Parametry s kl��i/certifik�ty

N�kolik openssl funkc� pot�ebuje parametr s kl��em nebo certifik�tem. PHP 4.0.5 a star�� mus� pro kl�� a certifik�t pou��vat resource vr�cen� n�kterou z funkc� openssl_get_xxx. Pozd�j�� verzi mohou pou��vat libovolnou z t�chto metod:

  • Certifik�ty

    1. X.509 zdroj vr�cen� funkc� openssl_x509_read()

    2. �et�zec ve form�tu file://path/to/cert.pem; uveden� soubor mus� obsahovat PEM-zak�dovan� certifik�t

    3. �et�zec obsahuj�c� PEM-zak�dovan� certifik�t

  • Ve�ejn� a soukrom� kl��e

    1. Zdroj kl��e vr�cen� funkc� openssl_get_publickey() nebo openssl_get_privatekey()

    2. Pouze ve�ejn� kl��e: zdroj X.509

    3. �et�zec ve form�tu file://path/to/file.pem - uveden� soubor mus� obsahovat PEM-zak�dovan� certifik�t / ve�ejn� kl�� (m��e obsahovat oba)

    4. �et�zec obsahuj�c� obsah certifik�tu / kl��e, PEM-zak�dovan�

    5. Pro soukrom� kl��e lze tak� pou��t syntaxi array($key, $heslo) kde $key reprezentuje kl�� zadan� pomoc� file:// nebo textov�ho uveden� zm�n�n�ho v��e a $heslo reprezentuje �et�zec obsahuj�c� heslo pro tento soukrom� kl��

Ov��en� certifik�tu

Kdy� vol�te funkci, kter� ov��uje podpis / certifik�t, parametr cainfo je pole obsahuj�c� n�zvy soubor� a adres���, kter� ur�uj� um�st�n� soubor� d�v�ryhodn�ch CA. Pokud je zad�n adres��, mus� to b�t spr�vn� uspo��dan� adres�� s hashi tak, jak ho pou��v� p��kaz openssl.

P�eddefinovan� konstanty

Tyto konstanty jsou definov�ny t�mto roz���en�m a budou k dispozici pouze tehdy, bylo-li roz���en� zkompilov�no spole�n� s PHP nebo dynamicky zavedeno za b�hu.

P�ep�na�e ov��en� ��elu

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)

P�ep�na�e vycp�vky

OPENSSL_PKCS1_PADDING (integer)

OPENSSL_SSLV23_PADDING (integer)

OPENSSL_NO_PADDING (integer)

OPENSSL_PKCS1_OAEP_PADDING (integer)

Typy kl���

OPENSSL_KEYTYPE_RSA (integer)

OPENSSL_KEYTYPE_DSA (integer)

OPENSSL_KEYTYPE_DH (integer)

P�ep�na�e / konstanty PKCS7

S/MIME funkce pou��vaj� p�ep�na�e, kterou jsou specifikov�ny jako bitov� pole, kter� m��e obsahovat jednu nebo v�ce n�sleduj�c�ch hodnot:

Tabulka 1. PKCS7 konstanty

KonstantaPopis
PKCS7_TEXTp�id� "text/plain content type" hlavi�ky k zak�dovan�m/podepsan�m zpr�v�m. P�i dek�dov�n� nebo ov��ov�n� odstran� tyto hlavi�ky z v�stupu - kdy� nen� rozk�dovan� nebo ov��en� zpr�va MIME typu text/plain, dojde k chyb�.
PKCS7_BINARYza norm�ln�ch okolnost� je zdrojov� zpr�va p�eveden� do "kanonick�ho" form�tu, kter� pou��v� pro konce ��dk� pou��v� CR a LF: tak, jak to po�aduje S/MIME specifikace. Kdy� je zapnuta tato volba, nedojde k ��dn�mu p�evodu. To se hod� v p��pad� manipulace s bin�rn�mi daty, kter� nemus� b�t v MIME form�tu.
PKCS7_NOINTERNp�i ov��ov�n� zpr�vy jsou za norm�ln�ch okolnost� certifik�ty obsa�en� ve zpr�v� (pokud n�jak� existuj�) prohled�van� na v�skyt podpisov�ho certifik�tu. S touto volbou se pou�ij� pouze certifik�ty zadan� v parametru extracerts funkce openssl_pkcs7_verify(). Zadan� certifik�ty ale st�le mohou b�t pou�ity jako ned�v�ryhodn� CA.
PKCS7_NOVERIFYneov��ovat certifik�t podepisovatele podepsan� zpr�vy.
PKCS7_NOCHAINnespojovat ov��en� podepisovatelov�ch certifik�t�: to znamen� nepou��vat certifik�ty v podepsan� zpr�v� jako ned�v�ryhodn� CA.
PKCS7_NOCERTSp�i podepisov�n� zpr�vy je za norm�ln�ch okolnost� p�ipojen certifik�t podepisovatele - s touto volbou tomu tak nen�. To zp�sob� sn�en� velikosti podepsan� zpr�vy, ale ov��ovatel mus� m�t kopii podepisovatelova certifik�tu k dispozici lok�ln� (nap��klad p�edanou v parametru extracerts funkce openssl_pkcs7_verify()).
PKCS7_NOATTRPokud je zpr�va podeps�na za norm�ln�ch okolnost�, je p�ipojena sada atribut� obsahuj�c� �as podpisu a podporovan� symetrick� algoritmy. S touto volbou nen� p�ipojena.
PKCS7_DETACHEDP�i podpisu zpr�vy pou�ije podpis �iteln�ho text spolu s MIME typem multipart/signed. To je v�choz� nastaven�, pokud ve funkci openssl_pkcs7_sign() nezad�te parametr flags. Pokud tuto volbu vypnete, bude zpr�va podeps�na za pou�it� nepr�hledn�ho podeps�n�, kter� je v�ce odoln� v��i p�eklad�m e-mailov�ch bran, ale nelze p�e��st klienty, kte�� nepodporuj� S/MIME.
PKCS7_NOSIGSNezkou�et a neov��ovat podpisy zpr�vy

Pozn�mka: Tyto konstanty byly p�id�ny ve verzi 4.0.6.

Obsah
openssl_csr_export_to_file -- Exports a CSR to a file
openssl_csr_export -- Exports a CSR as a string
openssl_csr_new -- Generates a CSR
openssl_csr_sign -- Sign a CSR with another certificate (or itself) and generate a certificate
openssl_error_string -- Return openSSL error message
openssl_free_key -- Uvolnit prost�edky kl��e
openssl_get_privatekey -- P�ipravit soukrom� PEM kl�� k pou�it�
openssl_get_publickey --  Z�skat z certifik�tu ve�ejn� kl�� a p�ipravit ho k pou�it�
openssl_open -- Otev��t zape�et�n� data
openssl_pkcs7_decrypt -- Decrypts an S/MIME encrypted message
openssl_pkcs7_encrypt -- Encrypt an S/MIME message
openssl_pkcs7_sign -- sign an S/MIME message
openssl_pkcs7_verify -- Verifies the signature of an S/MIME signed message
openssl_pkey_export_to_file -- Gets an exportable representation of a key into a file
openssl_pkey_export -- Gets an exportable representation of a key into a string
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 -- Generates a new private key
openssl_private_decrypt -- Decrypts data with private key
openssl_private_encrypt -- Encrypts data with private key
openssl_public_decrypt -- Decrypts data with public key
openssl_public_encrypt -- Encrypts data with public key
openssl_seal -- Zape�etit (zak�dovat) data
openssl_sign -- Generate signature
openssl_verify -- Ov��it podpis
openssl_x509_check_private_key -- Checks if a private key corresponds to a certificate
openssl_x509_checkpurpose -- Verifies if a certificate can be used for a particular purpose
openssl_x509_export_to_file -- Exports a certificate to file
openssl_x509_export -- Exports a certificate as a string
openssl_x509_free -- Free certificate resource
openssl_x509_parse -- Parse an X509 certificate and return the information as an array
openssl_x509_read -- Parse an X.509 certificate and return a resource identifier for it


add a note add a note User Contributed Notes
OpenSSL funkce
skippy zuavra net
20-Oct-2004 12:38
In case you're wondering what's a "correctly hashed" directory for the use with cainfo: it's simply a directory which contains CA public certificates in PEM/X.509 format. You can get such certificates either from the CA's website (they advertise it in visible places) or from your browser. In Explorer for instance you can click on the little yellow padlock, go to the CA entry and export it.

The only trick with the directory is that file names must be in the form "hash.#". The "hash" part is the 8-digit hex hash of the certificate, while the # part is a number which serves to differentiate certificates which give the same hash (yes, it can happen with certificates coming from the same CA). Usually # is 0, but you also can use 1, 2 and so on when having more certs with the same hash.

In order to obtain the hash of a certificate you can use the openssl command line utility like this:

openssl x509 -hash -in certfile.cer | head -1
jaz at ensn dot net
16-Sep-2004 06:18
For newbies (as me):
If you want to try at home on win32, you can learn how to install apache+ssl on this url:

Versions on English, Spanish and French.

Just I have read and install and run perfectly.
php ~at~ NOSPAM wwwcrm.com
12-Feb-2004 08:27
I spent some time fiddling with these functions for simple public key encryption jobs.

I wrote the following class which may be useful to others, it encapsulates much of the example code written by contributors to this section:



I hope it is useful to you.

----------------------------------
WIN 98, PHP 4.3.4, OpenSSL 0.9.7b
----------------------------------

Regards,
Alex Poole
norman at rasmussen dot org
02-Feb-2004 06:43
Debian maintainers have disabled the openssl support because it seems to help break apache on startup.  ( and )

- Norman
Maciej_Niemir at ilim dot poznan dot pl
17-Oct-2003 02:49
If you use OpenSSL in WIN32 you must copy libeay32.dll AND SSLEAY32.DLL to the SYSTEM32 folder of your windows machine.
jonbaer at jonbaer dot net
28-Jul-2003 07:24
Kept getting error warnings with Apache Monitor claiming that php_openssl.dll could not load correctly ... seems that in Apache2 (on Win32) to get OpenSSL to work correctly, copy all the .dll files located in $PHP_HOME/dlls to $APACHE_HOME/bin ... specifically the ssleay32.dll and libeay32.dll. 

- Jon

<ociwritetemporarylobopenssl_csr_export_to_file>
 Last updated: Thu, 15 Jul 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2004 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Sun Nov 14 23:09:54 2004 Local time zone must be set--see zic manual page