(PHP 4 >= 4.2.0, PHP 5, PHP 7)
openssl_csr_new — Génère une CSR
$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 apportés par dn
,
qui représente le nom unique (Distinguished Name) qui doit être utilisé pour ce certificat.
Note: Vous devez avoir un fichier openssl.cnf valide et installé pour que cette fonction opère correctement. Voir les notes se trouvant dans la section concernant l'installation pour plus d'informations.
dn
Le nom distingué qui doit être utilisé dans le certificat.
privkey
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.
configargs
Par défaut, le fichier openssl.conf de votre système
est utilisé pour initialiser la requête; vous pouvez spécifier une section
du fichier de configuration en paramétrant la clé config_section_section de
configargs
. Vous pouvez aussi spécifier un fichier de
configuration openssl alternatif en paramétrant la valeur de
config avec le chemin du fichier à utiliser.
Si les clés suivantes sont présentes dans configargs
, elles se
comportent comme leurs équivalents dans openssl.conf, selon la
liste suivante.
configargs |
type | Équivalent de openssl.conf | description |
---|---|---|---|
digest_alg | string | default_md | Sélectionne l'algorithme de hachage à utiliser |
x509_extensions | string | x509_extensions | Sélectionne quelle extension utiliser lors de la création d'un certificat x509 |
req_extensions | string | req_extensions | Sélectionne quelle extension utiliser lors de la création d'une CSR |
private_key_bits | integer | default_bits | Spécifie la longueur en bits de la clé privée |
private_key_type | integer | none | Spécifie le type de clé privée à créer. Les valeurs possibles
sont OPENSSL_KEYTYPE_DSA ,
OPENSSL_KEYTYPE_DH ou
OPENSSL_KEYTYPE_RSA .
La valeur par défaut est OPENSSL_KEYTYPE_RSA qui
est actuellement le seul type de clé supporté.
|
encrypt_key | boolean | encrypt_key | La clé (avec mot de passe) exportée doit-elle être chiffrée? |
encrypt_key_cipher | integer | none | Une des constantes cipher. |
extraattribs
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.
Retourne la CSR.
Exemple #1 Création d'un certificat autosigné
<?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ément, le nom de la personne
// qui représente le site de votre compagnie pour qui vous générez des certificats.
// Pour les certificats SSL, le commonName est généralement le nom de domaine
// pour lequel vous installez le certificat, mais pour les certificats S/MIME,
// 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@example.com"
);
// 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-signé
// une fois que votre autorité de certification accède à votre requête
// Cette commande crée une certificat auto-signé valide 365 jours
$sscert = openssl_csr_sign($csr, null, $privkey, 365);
// Maintenant, vous voulez préserver la clé privée, la CSR et le certificat
// auto-signé, 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";
}
?>