<?php
// Supongamos que este script está configurado para recibir CSR que han
// sido pegados en un campo textarea desde otra página
$csrdata = $_POST["CSR"];
// Vamos a firmar la solicitud con nuestro propio certificado, como
// "autoridad de certificación". Puede utilizarse cualquier certificado para firmar otro,
// pero el proceso es inútil a menos que el certificado de firma tenga la confianza de los usuarios
// que utilizarán el nuevo certificado firmado.
// Necesitamos nuestro certificado y la clave privada
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "la_clave_secreta_de_su_certificado");
$usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365, array('digest_alg'=>'sha256') );
// Mostramos ahora el certificado generado, de forma que el usuario
// pueda copiarlo/pegarlo en su configuración local (como un
// archivo que contiene los certificados de su servidor SSL)
openssl_x509_export($usercert, $certout);
echo $certout;
// Muestra todos los errores ocurridos
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>