Documentación offline PHP master

openssl_pkcs7_sign

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

En esta página

openssl_pkcs7_sign

Firma un mensaje S/MIME

Descripción#

#[\SensitiveParameter] openssl_pkcs7_sign(string $input_filename, string $output_filename, OpenSSLCertificate $certificate, OpenSSLAsymmetricKey $private_key, array $headers, [int $flags], [string $untrusted_certificates_filename]): bool
```php

`openssl_pkcs7_sign` toma el contenido del fichero `input_filename` y lo firma utilizando el certificado y la clave privada contenidos en los argumentos `certificate` y `private_key`.

## Parámetros

`input_filename`  
El fichero de entrada que se tiene la intención de firmar digitalmente.

`output_filename`  
El fichero donde se escribirá la firma digital.

`certificate`  
El certificado X.509 utilizado para firmar digitalmente `input_filename`. Ver [parámetros Clave/Certificado](#openssl.certparams) para una lista de valores válidos.

`private_key`  
`private_key` es la clave privada correspondiente a `certificate`. Ver [parámetros Clave Pública/Privada](#openssl.certparams) para una lista de valores válidos.

`headers`  
`headers` es un array de encabezados que serán añadidos a los datos cifrados (ver la función `openssl_pkcs7_encrypt` para más detalles sobre el formato del parámetro).

`flags`  
`flags` puede ser utilizado para modificar la salida. Ver las [constantes PKCS7](#openssl.pkcs7.flags).

`untrusted_certificates_filename`  
`untrusted_certificates_filename` especifica el nombre del fichero que contiene un conjunto de certificados adicionales a incluir en la firma, los cuales podrán ayudar al destinatario a verificar los datos que se utilizan.

## Valores devueltos

Esta función retorna `true` en caso de éxito o `false` si ocurre un error.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.0.0 | `certificate` ahora acepta una instancia de `OpenSSLCertificate` ; anteriormente, se aceptaba un `resource` de tipo `OpenSSL X.509 CSR`. |
| 8.0.0 | `private_key` 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_pkcs7_sign`
"joes@example.com", // sintaxis con clave "From: HQ ", // sintaxis indexada "Subject" => "Eyes only") )) { // mensaje firmado - ¡envíelo! exec(ini_get("sendmail_path") . " < signed.txt"); } ?>

```php