openssl_csr_sign
(PHP 4 >= 4.2.0)
openssl_csr_sign -- Signe un certificat avec un autre certificat
Description
resource
openssl_csr_sign ( mixed csr, mixed cacert, mixed priv_key, int days)
openssl_csr_sign() génère un certificat x509 (une ressource)
depuis la CSR csr, générée précédemment par
openssl_csr_new(), mais ce paramètre peut aussi être 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().
Le certificat généré sera signé par le certificat
cacert. Si cacert vaut NULL,
le certificat généré sera auto-signé.
priv_key est la clé privée qui correspond au certificat
cacert.
days spécifie la durée pour laquelle le certificat
est valide, en nombre de jour.
openssl_csr_sign() retourne une ressource de certificat x509
en cas de succès, et FALSE sinon.
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.
Exemple 1. Exemple avec openssl_csr_sign() : signer une CSR
(comment réaliser votre propre autorité de certification)
// Supposont que ce script est configuré pour recevoir des CSR qui ont // été collé 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'ai 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é, ce façon à ce que l'utilisateur // puisse le copier/coller dans leur configuration locale ( comme par exemple un // fichier qui contient les certificats de leur serveur SSL) openssl_x509_export($usercert, $certout) and echo $certout;
// Affiche toutes les erreurs survenues while (($e = openssl_error_string()) !== false) { echo $e . "\n"; }
|
|