Manuel PHP
Précédent |  | Suivant

# openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5)

openssl_csr_new -- Génère un CSR

## Description

bool openssl_csr_new ( array dn, resource &privkey [, array configargs [, array extraattribs]])

openssl_csr_new() génère un nouveau CSR (Certificate Signing Request, requête de signature de certificat), basé 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 le CSR.

extraattribs est utilisé pour spécifier des options de configuration supplémentaires pour le 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.

Tableau 1. Adaptation des configurations

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 êtr 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 1. 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 cerficat.
$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 la clé privé 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) et var_dump($csrout);
openssl_x509_export($sscert, $certout) et var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") et var_dump($pkeyout);
// Affiche les erreurs qui sont survenues
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>`

Précédent | Sommaire | Suivant
openssl_csr_export | Niveau supérieur | openssl_csr_sign