Documentación offline PHP master

openssl_csr_sign

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

openssl_csr_sign

Firma un

CSR

con otro certificado (o consigo mismo) y genera un certificado

Descripción#

#[\SensitiveParameter] openssl_csr_sign(OpenSSLCertificateSigningRequest $csr, OpenSSLCertificate $ca_certificate, OpenSSLAsymmetricKey $private_key, int $days, [array $options], [int $serial], [string $serial_hex]): OpenSSLCertificate
```php

`openssl_csr_sign` genera un certificado x509 desde el CSR proporcionado.

> [!NOTE]
> Debe existir un archivo `openssl.cnf` válido e instalado para que esta función opere correctamente. Ver las notas encontradas en la [sección concerniente a la instalación](#openssl.installation) para más información.

## Parámetros

`csr`  
Un CSR generado previamente por `openssl_csr_new`. Sin embargo, esto también puede ser la ruta hacia un CSR codificado en formato PEM si se especifica con `file://path/to/csr` o una cadena exportada generada por `openssl_csr_export`.

`ca_certificate`  
El certificado generado será firmado por el certificado `ca_certificate`. Si `ca_certificate` es `null`, el certificado generado será autosignado.

`private_key`  
`private_key` es la clave privada que corresponde al certificado `ca_certificate`.

`days`  
`days` especifica la duración para la cual el certificado es válido, en número de días.

`options`  
Se pueden ajustar las opciones de firma CSR con `options`. Consulte la función `openssl_csr_new` para obtener más información sobre `options`.

`serial`  
Un número de serie opcional para el certificado emitido. Si no se especifica, tendrá un valor de 0.

`serial_hex`  
Una cadena hexadecimal opcional que representa el número de serie del certificado emitido. Si se define, tiene prioridad sobre el valor del parámetro `serial`. Si no se especifica o se define como `null`, se utiliza el valor del parámetro `serial` en su lugar.

## Valores devueltos

Devuelve una instancia de `OpenSSLCertificate` en caso de éxito, `false` en caso contrario.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.4.0 | Se ha añadido el parámetro `serial_hex`. |
| 8.0.0 | En caso de éxito, esta función devuelve ahora una instancia de `OpenSSLCertificate` ; anteriormente se devolvía un `resource` de tipo `OpenSSL X.509`. |
| 8.0.0 | `csr` ahora acepta una instancia de `OpenSSLCertificateSigningRequest` ; anteriormente se aceptaba un `resource` de tipo `OpenSSL X.509 CSR`. |
| 8.0.0 | `ca_certificate` ahora acepta una instancia de `OpenSSLCertificate` ; anteriormente se aceptaba un `resource` de tipo `OpenSSL X.509`. |
| 8.0.0 | `ca_certificate` ahora acepta una instancia de `OpenSSLAsymmetricKey` o `OpenSSLCertificate` ; anteriormente se aceptaba un `resource` de tipo `OpenSSL key` o `OpenSSL X.509`. |

## Ejemplos

Ejemplo con `openssl_csr_sign` - firmar una CSR (cómo ser su propia Autoridad de Certificación)
'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"; } ?>

```php