(PHP 4 >= 4.2.0, PHP 5)
openssl_csr_sign — Firmar una CSR con otro certificado (o autofirmar) y generar un certificado
openssl_csr_sign() genera un recurso de certificado x509 desde la CSR dada.
Note: 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.
Una 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().
El certificado generado será firmado por cacert. Si cacert es NULL, el certificado generado será un certificado autofirmado.
priv_key es la clave privada que se corresponde con cacert.
days especifica la duración durante la cuál el certificado generado será válido, en días.
Se puede ajustar la firma de la CSR mediante configargs. Véase openssl_csr_new() para más información acerca de configargs.
El 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ó.
Versión | Descripción |
---|---|
4.3.3 | Se añadió el parámetro serial. |
Example #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");
$userscert = 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";
}
?>