(PHP 4 >= 4.2.0, PHP 5)
openssl_csr_sign — Signe un CSR avec un autre certificat
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 jours. Vous pouvez affiner la signature CSR avec configargs . Voir la fonction openssl_csr_new() pour plus d'informations sur le paramètre configargs . Depuis PHP 4.3.3, vous pouvez spécifier le numéro de série du certificat généré avec l'argument serial . Dans les versions précédentes, il vaut toujours 0.
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 1835. Exemple avec openssl_csr_sign() : signer une CSR (comment réaliser 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"
;
}
?>