(PHP 4 >= 4.2.0, PHP 5, PHP 7)
openssl_csr_sign — Firmar una CSR con otro certificado (o autofirmar) y generar un certificado
$csr
, mixed $cacert
, mixed $priv_key
, int $days
[, array $configargs
[, int $serial = 0
]] ) : resourceopenssl_csr_sign() genera un recurso de certificado x509 desde la CSR dada.
Nota: Necesita tener instalado un openssl.cnf válido para que esta función opere correctamente. Vea las notas sobre la sección de instalación para más información.
csrUna CSR previamente generada por openssl_csr_new(). También puede ser la ruta de una CSR codificada con PEM cuando se especifica con file://ruta/a/csr o una cadena exportada generada por openssl_csr_export().
cacert
El certificado generado será firmado por cacert.
Si cacert es NULL, el certificado generado
será un certificado autofirmado.
priv_key
priv_key es la clave privada que se corresponde con
cacert.
days
days especifica la duración durante la cuál el
certificado generado será válido, en días.
configargs
Se puede ajustar la firma de la CSR mediante configargs.
Véase openssl_csr_new() para más información acerca de
configargs.
serialEl número de serie opcional del certificado emitido. Si no se especifica será 0 por defecto.
Devuelve un recurso de certificado x509 si se tuvo éxito, FALSE si falló.
Ejemplo #1 Ejemplo de openssl_csr_sign() - firmar una CSR (cómo implementar su propia AC)
<?php
// Asumimos que este script está establecido para recivir una CSR que ha
// sido pegada al área de texto desde otra página
$csrdata = $_POST["CSR"];
// Firmaremos la petición usando nuestro propio certificado de "autoridad
// certificadora". También puede usar cualquier certificado para firmar otro, pero
// el proceso no vale de nada a menos que el certificado de firma sea acreditado
// por el software/usuarios que tratarán con el certificado recién firmado
// Necesitamos nuestro certificado de AC y su clave privada
$cacert = "file://ruta/a/ca.crt";
$privkey = array("file://ruta/a/ca.key", "su_frase_de_contraseña");
$usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365);
// Ahora mostramos el certificado generado por lo que el ususario puede
// copiarlo y pegarlo a su configuración local (tal como un archivo
// para guardar el certificado para su servidor SSL)
openssl_x509_export($usercert, $certout);
echo $certout;
// Mostrar cualquier error que ocurra
while (($e = openssl_error_string()) !== false) {
echo $e . "\n";
}
?>