|
|
LXXVIII. OpenSSL funkce
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.
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.
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.
Toto roz���en� nem� definov�no ��dn� konfigura�n�
direktivy.
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
X.509 zdroj vr�cen� funkc�
openssl_x509_read()
�et�zec ve form�tu
file://path/to/cert.pem; uveden� soubor mus�
obsahovat PEM-zak�dovan� certifik�t
�et�zec obsahuj�c� PEM-zak�dovan� certifik�t
Ve�ejn� a soukrom� kl��e
Zdroj kl��e vr�cen� funkc�
openssl_get_publickey() nebo
openssl_get_privatekey()
Pouze ve�ejn� kl��e: zdroj X.509 �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)
�et�zec obsahuj�c� obsah certifik�tu / kl��e, PEM-zak�dovan�
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��
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.
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.
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 Konstanta | Popis |
---|
PKCS7_TEXT | p�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_BINARY | za 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_NOINTERN | p�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_NOVERIFY | neov��ovat certifik�t podepisovatele podepsan�
zpr�vy. | PKCS7_NOCHAIN | nespojovat ov��en� podepisovatelov�ch certifik�t�: to znamen�
nepou��vat certifik�ty v podepsan� zpr�v� jako ned�v�ryhodn� CA.
| PKCS7_NOCERTS | p�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_NOATTR | Pokud 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_DETACHED | P�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_NOSIGS | Nezkou�et a neov��ovat podpisy zpr�vy |
Pozn�mka: Tyto konstanty byly p�id�ny ve verzi 4.0.6.
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
| |