PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links 
search for in the  
previousOCIWriteLobToFileopenssl_csr_export_to_filenext
Last updated: Tue, 09 Jul 2002
view the printer friendly version or the printer friendly version with notes or change language to English | Brazilian Portuguese | Chinese | Czech | Dutch | Finnish | German | Hungarian | Italian | Japanese | Korean | Polish | Romanian | Russian | Spanish | Swedish | Turkish

LXXI. OpenSSL

Avertissement

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concr�tement, TOUT ce qui est document� ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utiliser ce module � vos risques et p�rils.

Introduction

Cette extension utilise les fonctions de pour g�n�rer et v�rifier les signatures, ainsi que pour sceller (chiffrer) et ouvrir (d�chiffrer) les donn�es. Vous avez besoin de OpenSSL >= 0.9.5 pour utiliser ce module.

Cette extension supporte aussi la signature et le cryptage des courrier �l�ctroniques. Il est aussi possible de sp�cifier des couples cl�s/certificats d'un grand nombre de cas, qui rendent le code PHP plus facile � lire. Ces fonctionnalit�s sont disponibles en d�veloppement sur CVS, et probablement avec PHP 4.0.6. ATTENTION : cette extension est encore exp�rimentale!

OpenSSL offre de nombreuses fonctionnalit�s qui ne sont pas encore support�es par ce module. Elle seront ajout�es ult�rieurement.

Param�tres cl�s/certificats

Un bon nombre de fonctions OpenSSL demandent une cl� et un certificat comme param�tres. PHP 4.0.5 et plus r�cent utilisait des cl�s ou certificats sous forme de ressource, retourn�e par l'une des fonctions openssl_get_xxx(). Les versions ult�rieures utilisent l'une des m�thodes suivantes :

  • Certificats

    1. Une ressource X.509 retourn�e par openssl_x509_read()

    2. Une cha�ne au format file://path/to/cert.pem; Le fichier ainsi rep�r� doit contenir un certificat, encod� au format PEM

    3. Une cha�ne contenant le contenu d'un certificat, encod� au format PEM.

  • Cl�s publiques/priv�e

    1. Une ressource cl�, retourn�e par la fonction openssl_get_publickey() ou openssl_get_privatekey()

    2. Pour les cl�s publiques seulement : une ressource X.509

    3. Une cha�ne avec le format : file://path/to/file.pem. Le fichier doit contenir une cl� priv� ou un certificat, encod� au format PEM (il peut contenir les deux).

    4. Une cha�ne contenant une cl� ou un certificat encod� au format PEM

    5. Pour les cl�s priv�es, vous pouvez aussi utiliser la syntaxe array($key, $passphrase), o� $key repr�sente une cl� sp�cifi�e par un fichier ou une repr�sentation textuelle comme cit� ci-dessus, et $passphrase repr�sente une cha�ne contenant la passe-phrase de cette cl� priv�e.

V�rification de certificats

Lorsque vous appelez une fonction qui va v�rifier une signature ou un certificat, le param�tre cainfo doit �tre un tableau contenant les noms d'un dossier et d'un fichier contenant les tiers de confiance. Si un dossier est sp�cifi�, il doit �tre correct, car openssl va l'utiliser.

Constantes/flags PKCS7

Les fonctions S/MIME utilisent des flags qui sont sp�cifi�s par un champs de bits. Les valeurs valides sont :

Tableau 1. Constantes PKCS7

ConstanteDescription
PKCS7_TEXT Ajoute le texte plein en clair dans les en-t�tes du message sign�/chiffr�. Lors du d�chiffrement ou la v�rification, il supprime purement et simplement ces donn�es. Si le message chiffr� ou sign� n'est pas du type MIME, une erreur surviendra.
PKCS7_BINARY Normalement, le message est converti au format canonique qui utilise effectivement des CR et LF comme fin de ligne, comme demand� dans les sp�cification de S/MIME. Lorsque cette option est activ�e, le message ne sera pas converti. Cela sert lorsque vous manipulez des donn�es binaires qui ne sont pas au format MIME.
PKCS7_NOINTERN Lors de la v�rification d'un message, les certificats (s'il y en a) inclus dans le message sont normalement utilis� pour rechercher le certificat de signature. Avec cette option, seul le certificat sp�cifi� par le param�tre extracerts de la fonction openssl_pkcs7_verify() est utilis�. Les certificats fournis peuvent toujours �tre utilis�, avec un niveau de confiance r�duit.
PKCS7_NOVERIFY Ne v�rifie pas les certificats des signataires d'un message sign�.
PKCS7_NOCHAIN N'enchaine pas les v�rifications des signataires de certificats. C'est-�-dire, n'utilise pas les certificats contenu dans le message.
PKCS7_NOCERTS Lors de la signature d'un message, le certificat du signataire est normalement inclus. Avec cette option, c'est d�sactiv�. Cela va r�duire la taille du message, mais le v�rificateur devra avoir une copie local du certificat du signataire (pass�e au param�tre extracerts, avec la fonction openssl_pkcs7_verify()).
PKCS7_NOATTR Normalement, lorsqu'un message est sign�, un jeu d'attributs contenant l'heure de signature et l'algorithme sym�trique support�, est inclus dans le message. Avec cette option, il n'est pas inclus.
PKCS7_DETACHED Lors de la signature d'un message, utilise la signature en texte claire, avec le type MIME "multipart/signed". C'est la valeur par d�faut du param�tre flags pour la fonction openssl_pkcs7_sign(). Si vous annulez cette optoin, le message sera sign� de mani�re opaque, ce qui resiste mieux � la traduction des relais mails (certains serveur mail anciens corrompent les messages), mais emp�che la lecture par les client mails qui ne connaissent pas S/MIME.
PKCS7_NOSIGS Ne v�rifie pas les signatures d'une message

Note�: Ces constantes ont �t� ajout�es en PHP 4.0.6.

Table des mati�res
openssl_csr_export_to_file -- Exports a CSR to file or a var
openssl_csr_export -- Exports a CSR to file or a var
openssl_csr_new -- Generates a privkey and CSR
openssl_csr_sign -- Signs a cert with another CERT
openssl_error_string -- Retourne le message d'erreur OpenSSL
openssl_free_key -- Lib�re les ressources
openssl_get_privatekey --  Pr�pare une cl� priv�e au format PEM
openssl_get_publickey -- Extrait une cl� publique d'un certificat
openssl_open -- Ouvre des donn�es scell�es
openssl_pkcs7_decrypt -- D�chiffre un message S/MIME
openssl_pkcs7_encrypt -- Chiffre un message S/MIME
openssl_pkcs7_sign -- Signe un message S/MIME
openssl_pkcs7_verify -- V�rifie la signature d'un message S/MIME
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 or file
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 -- Scelle des donn�es
openssl_sign -- Signe les donn�es
openssl_verify -- V�rifie une signature
openssl_x509_check_private_key -- Checks if a private key corresponds to a CERT
openssl_x509_checkpurpose -- V�rifie l'usage d'un certificat
openssl_x509_export_to_file -- Exports a CERT to file or a var
openssl_x509_export -- Exports a CERT to file or a var
openssl_x509_free --  Lib�re les ressources prises par un certificat
openssl_x509_parse -- Analyse un certificat X509.
openssl_x509_read --  Analyse un certificat X.509 et retourne une ressource
User Contributed Notes
OpenSSL
add a note about notes
[email protected]
06-Apr-2001 09: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

[email protected]
02-Jun-2001 07: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).


[email protected]
29-Jan-2002 09:38

in trying to install the win32 extensions php_curl and php_openssl with php loaded as an apache module. Starting apache said that. it could not load the libraries due to missing dlls, i check the existence of the dlls in the php/dll directory and pasted them everywhere i could think imginable. the promlem lay in the php.ini file, for what ever reason the extension_dir was chanegd to the dir of my php install "./newphp" i changed it to the correct "c:\windows\system" and it worked beautifully, now if i could only get mcrypt to work.
[email protected]
13-Feb-2002 08:19

Why not PHP use openSSL's BIGNUM library to replace the liscensed BCMath functions? This does not seems very hard to do!
[email protected]
15-Mar-2002 03:28

The BCMath library has been released under the LGPL
[email protected]
08-Jul-2002 09:07

Can someone please post a "howto" or "getting started" for the openssl + php? I'd like to encrypt data in my database with a public key, and later, decrypt this with an off-site private key.

The only thing I have done so far is recompile PHP with ssl support. And the 'openssl' command on my rh7.3 linux system is short on the documentation.

Thanks
John

[email protected]
10-Jul-2002 05:04

I want to create a CA , andd i want to know how can i generate csr with openSSL (win32) without intercative mode?
add a note about notes
previousOCIWriteLobToFileopenssl_csr_export_to_filenext
Last updated: Tue, 09 Jul 2002
show source | credits | stats | mirror sites
Copyright © 2001, 2002 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Sat Aug 31 06:19:44 2002 CEST