Manuel PHP
Précédent |  | Suivant

# openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5)

openssl_csr_new -- Génère une CSR

## Description

mixed 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.

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 ê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 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 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";
}
?>`

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