openssl_csr_new
openssl_decrypt
Fonctions OpenSSL
PHP Manual

# openssl_csr_sign

(PHP 4 >= 4.2.0, PHP 5)

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

### Description

resource openssl_csr_sign ( mixed `$csr` , mixed `$cacert` , mixed `$priv_key` , int `$days` [, array `$configargs` [, int `$serial` = 0 ]] )

openssl_csr_sign() génère une ressource de certificat x509 depuis la CSR donnée.

> 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

`csr`

  Une CSR générée précédemment par openssl_csr_new(). mais ce paramètre peut aussi être une Ca peut aussi être le chemin vers une CSR encodée au format PEM, et spécifiée avec file://path/to/csr ou une chaîne exportée par openssl_csr_export().

`cacert`

  Le certificat généré sera signé par le certificat `cacert`. Si `cacert` vaut `NULL`, le certificat généré sera autosigné.

`priv_key`

  `priv_key` est la clé privée qui correspond au certificat `cacert`.

`days`

  `days` spécifie la durée pour laquelle le certificat est valide, en nombre de jours.

`configargs`

  Vous pouvez affiner la signature CSR avec `configargs`. Voir la fonction openssl_csr_new() pour plus d'informations sur `configargs`.

`serial`

  Un numéro de série optionnel pour le certificat émis. S'il n'est pas spécifié, il vaudra 0.

### Valeurs de retour

Retourne la ressource de certificat x509 en cas de succès, `FALSE` sinon.

### Historique

Version | Description
--- | ---
4.3.3 | Le paramètre `serial` a été ajouté.

### Exemples

Exemple #1 Exemple avec openssl_csr_sign() - signer une CSR (comment être votre propre Autorité de Certification)

`<?php
// Supposons que ce script est configuré pour recevoir des CSR qui ont
// été collés dans un champ textarea depuis une autre page
$csrdata = $_POST["CSR"];
// Nous allons signer la requête avec notre propre certificat, en tant
// qu'"autorité de certification". Vous pouvez utiliser n'importe quel
// certificat pour en signer un autre, mais le processus est inutile à moins
// que le certificat de signature n'ait la confiance des utilisateurs
// qui utiliseront le nouveau certificat signé.
// Nous avons besoin de notre certificat et de la clé privée
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "la_cle_secrete_de_votre_certificat");
$userscert = openssl_csr_sign($csrdata, $cacert, $privkey, 365);
// Affichons maintenant le certificat généré, de façon à ce que l'utilisateur
// puisse le copier/coller dans sa configuration locale (comme un
// fichier qui contient les certificats de son serveur SSL)
openssl_x509_export($usercert, $certout);
echo $certout;
// Affiche toutes les erreurs survenues
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>`

openssl_csr_new
openssl_decrypt
Fonctions OpenSSL
PHP Manual