8.86 OpenSSL 
8 Référence des fonctions 
 Manuel PHP 
 . Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Paramètres clés/certificats . Vérification de certificats . Constantes pré-définies . openssl_csr_export_to_file . openssl_csr_export ->openssl_csr_new . openssl_csr_sign . openssl_error_string . openssl_free_key . openssl_get_privatekey . openssl_get_publickey . openssl_open . openssl_pkcs7_decrypt . openssl_pkcs7_encrypt . openssl_pkcs7_sign . openssl_pkcs7_verify . openssl_pkey_export_to_file . openssl_pkey_export . openssl_pkey_get_private . openssl_pkey_get_public . openssl_pkey_new . openssl_private_decrypt . openssl_private_encrypt . openssl_public_decrypt . openssl_public_encrypt . openssl_seal . openssl_sign . openssl_verify . openssl_x509_check_private_key . openssl_x509_checkpurpose . openssl_x509_export_to_file . openssl_x509_export . openssl_x509_free . openssl_x509_parse . openssl_x509_read
 
  | 
 
  8.86.11 openssl_csr_new()Génère une CSR[ Exemples avec openssl_csr_new ]   PHP 4 >= 4.2.0, PHP 5 
bool
 openssl_csr_new (
array
 
dn
 ,
resource
 
privkey
 ,
array
 
configargs
 ,
array
 
extraattribs
 )
openssl_csr_new
  génère une nouvelle CSR 
     ( 
Certificate Signing Request
 ,
     requête de signature de certificat), basée sur les informations fournies par 
      
dn
 , qui représente le nom unique 
     ( 
Distinguished Name
 ) qui doit être utilisé pour ce certificat.
     
privkey
  doit être une clé privée qui a été
     générée par  
openssl_pkey_new
  (ou
     obtenue autrement par l'une des fonctions de la famille openssl_pkey)
     La clé publique sera utilisée pour signer la CSR.
     
extraattribs
  est utilisé pour spécifier
     des options de configuration supplémentaires pour la CSR. Les deux
     paramètres  
dn
  et
      
extraattribs
  sont des tableaux associatifs dont les
     clés sont converties en OIDs et appliquées aux parties appropriées de la 
     requête.
     
| Note |  | 
 
  Vous devez installer un fichier  
openssl.cnf
  valide pour que
  cette fonction opère correctement. Voyez les notes dans la 
   section installation  pour
  plus d'informations.
  
 |   
     Par défaut, les informations du fichier  
openssl.conf
 
     de votre système sont utilisées pour initialiser la requête ; vous pouvez
     spécifier une section du fichier de configuration en utilisant l'index
      
config_section_section
  du tableau
      
configargs
 . Vous pouvez aussi
     spécifier une configuration OpenSSL alternative en utilisant l'index
      
config
 , et en lui donnant la valeur du chemin à
     utiliser. Les index suivants, si fournis dans le paramètre 
      
configargs
 , se comportent comme leur équivalent
     du fichier  
openssl.conf
 , tel qu'indiqué ci-dessous.
      
 
| Index 
configargs
 | 
Type | 
Equivalent 
openssl.conf
 | 
Description | 
 
| digest_alg | 
chaîne de caractères | 
default_md | 
Sélectionne la méthode "digest" à utiliser | 
 
| x509_extensions | 
chaîne de caractères | 
x509_extensions | 
Sélectionne quelles extensions doivent être utilisées lors de la
         création du certificat x509 | 
 
| req_extensions | 
chaîne de caractères | 
req_extensions | 
Sélectionne quelles extensions doivent être utilisées lors de la
         création d'une CSR | 
 
| private_key_bits | 
entier | 
default_bits | 
Spécifie le nombre de bits à utiliser lors de la génération de la 
         clé privée | 
 
| private_key_type | 
entier | 
none | 
Spécifie le type de clé privée à générer. Cela peut être l'une des
         constantes suivantes : 
OPENSSL_KEYTYPE_DSA
,
          
OPENSSL_KEYTYPE_DH
 ou
          
OPENSSL_KEYTYPE_RSA
.
          La valeur par défaut est 
OPENSSL_KEYTYPE_RSA
,
          ce qui est le seul type de clé actuellement supporté.
          | 
 
| encrypt_key | 
booléen | 
encrypt_key | 
Doit être une clé exportée (avec mot de passe) qui sera
         chiffrée? | 
 
 
     Cette fonction retourne  
TRUE
  en cas de
succès,  
FALSE
  en cas d'échec.
     
 | Exemple avec openssl_csr_new - création d'un certificat auto chiffré |  
<?php // Assigne les valeurs du nom distingué à utiliser avec le certificat // Vous devez remplacer les valeurs suivantes pour qu'elles correspondent // au nom de votre compagnie, ou, plus préciséement, le nom de la personne // qui représente le site de votre compagnie pour qui vous générez des // clés. Pour les certificats SSL, le commonName est généralement le nom de domaine // pour lequel vous installez le certificat, mais pour les certificats // le commonName sera le nom de la personne qui utilisera le certificat. $dn = array(     "countryName" => "UK",     "stateOrProvinceName" => "Somerset",     "localityName" => "Glastonbury",     "organizationName" => "The Brain Room Limited",     "organizationalUnitName" => "PHP Documentation Team",     "commonName" => "Wez Furlong",     "emailAddress" => "wez@php.net" );
  // Génère les clés privée et publique $privkey = openssl_pkey_new();
  // Génère la requête de signature de certificat $csr = openssl_csr_new($dn, $privkey);
  // Vous souhaiterez généralement créer un certificat auto chiffré // une fois que votre autorité de certification accède à votre requête // Cette commande crée une certificat auto chiffré $sscert = openssl_csr_sign($csr, null, $privkey, 365);
  // Maintenant, vous voulez préserver la clé secrête, la CSR et le certificat // auto chiffré, de façon à ce qu'ils puissent être installés sur votre // serveur web, serveur mail ou client mail (suivant l'utilisation). // Cet exemple vous montre comment placer ces éléments dans des variables // mais vous pouvez aussi les mettre directement dans des fichiers. // Typiquement, vous allez envoyer la CSR à votre autorité de certification // qui vous émettra un "vrai" certificat. openssl_csr_export($csr, $csrout) and var_dump($csrout); openssl_x509_export($sscert, $certout) and var_dump($certout); openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);
  // Affiche les erreurs qui sont survenues while (($e = openssl_error_string()) !== false) {     echo $e . "\n"; } ?>
 
 |   
 |