Rechercher une fonction PHP

openssl_csr_new

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

openssl_csr_newGé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.

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

dn

Le nom distingué ou champs de sujets 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 Méthode de digeste ou signature de hachage, généralement un de openssl_get_md_methods()
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. Cela peut être l'un de OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA ou OPENSSL_KEYTYPE_EC. La valeur par défaut est OPENSSL_KEYTYPE_RSA.
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.
curve_name string none Un de openssl_get_curve_names().
config string N/A Chemin vers votre fichier openssl.conf alternatif.

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Retourne la CSR ou FALSE si une erreur survient.

Retour à la première page de Manuel PHP  Table des matières Haut

Historique

Version Description
7.1.0 configargs supporte désormais curve_name.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Création d'un certificat autosigné

<?php
// pour les certificats SSL serveur, le commonName est le nom de domaine à sécuriser
// pour les certificats e-mail S/MIME le commonName est le propriétaire de l'adresse e-mail
// les champs d'emplacement et d'identification font référence au propriétaire du domaine ou à l'objet de l'e-mail à sécuriser
$dn = array(
    
"countryName" => "GB",
    
"stateOrProvinceName" => "Somerset",
    
"localityName" => "Glastonbury",
    
"organizationName" => "The Brain Room Limited",
    
"organizationalUnitName" => "PHP Documentation Team",
    
"commonName" => "Wez Furlong",
    
"emailAddress" => "wez@example.com"
);

// Génère une nouvelle paire de clés privée (et publique)
$privkey openssl_pkey_new(array(
    
"private_key_bits" => 2048,
    
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));

// Génère une requête de signature de certificat
$csr openssl_csr_new($dn$privkey, array('digest_alg' => 'sha256'));

// Génère un certificat autosigné, valide pour 365 jours
$x509 openssl_csr_sign($csrnull$privkey$days=365, array('digest_alg' => 'sha256'));

// Conservez votre clé privée, CSR et certificat autosigné pour une utilisation ultérieur
openssl_csr_export($csr$csrout) and var_dump($csrout);
openssl_x509_export($x509$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";
}
?>

Exemple #2 Créer un certficat ECC autosigné (à partir de PHP 7.1.0)

<?php
$subject 
= array(
    
"commonName" => "docs.php.net",
);

// Génère une nouvelle paire de clés privée (et publique)
$private_key openssl_pkey_new(array(
    
"private_key_type" => OPENSSL_KEYTYPE_EC,
    
"curve_name" => 'prime256v1',
));

// Génère une requête de signature de certificat
$csr openssl_csr_new($subject$private_key, array('digest_alg' => 'sha384'));

// Génère un certificat EC autosigné
$x509 openssl_csr_sign($csrnull$private_key$days=365, array('digest_alg' => 'sha384'));
openssl_x509_export_to_file($x509'ecc-cert.pem');
openssl_pkey_export_to_file($private_key'ecc-private.key');
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

  • openssl_csr_sign() - Signe un CSR avec un autre certificat (ou lui-même) et génère un certificat

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.openssl-csr-new.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut