LXXII. 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 OpenSSL 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 ) , $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 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

Constante
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 .
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 .
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 .
Ne vérifie pas les certificats des signataires d ' un message signé .
N ' enchaine pas les vérifications des signataires de certificats . C' est-à-dire , n 'utilise pas les certificats contenu dans le message .
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( ) ) .
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 .
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 .
Ne vérifie pas les signatures d ' une message


Ces constantes ont été ajoutées en PHP 4.0.6 .

Table des matières
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 -- 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
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 -- 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 certificate
openssl_x509_checkpurpose -- Vérifie l'usage d'un certificat
openssl_x509_export_to_file -- Exports a certificate to file
openssl_x509_export -- Exports a certificate as a string
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