Génère une CSR

# openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_csr_new — Génère une CSR

### Description

openssl_csr_new ( array `$dn` , resource `&$privkey` [, array `$configargs` [, array `$extraattribs` ]] ) : mixed

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.

### Liste de paramètres

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

  Écrasement de configuration
  `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.

### Valeurs de retour

Retourne la CSR.

### Exemples

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