openssl_csr_sign
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)
```php