# Firma digital
PHP FacturaE soporta firma digital con XAdES-EPES conforme a la política de firma FacturaE v3.1.
Certificados PKCS#12 (.pfx / .p12)
use PhpFacturae\Signer;
$signer = Signer::pfx('certificado.pfx', 'miPasswordSeguro');$invoice->sign($signer);Certificados PEM
$signer = Signer::pem( certPath: 'certificado.pem', keyPath: 'clave-privada.pem', passphrase: 'passwordClave');Sellado de tiempo (TSA)
$signer = Signer::pfx('certificado.pfx', 'password') ->timestamp('https://freetsa.org/tsr');Con autenticación:
->timestamp( url: 'https://tsa.ejemplo.com/tsr', user: 'miUsuario', password: 'miPassword')Detalles criptográficos
- Canonicalización: C14N (Canonical XML 1.0)
- Algoritmo de resumen: SHA-256
- Algoritmo de firma: RSA-SHA256
- Transformación: Firma envolvente (enveloped signature)
Conversión de certificados
# PEM a PKCS#12openssl pkcs12 -export -in certificado.pem -inkey clave-privada.pem -out certificado.pfx
# PKCS#12 a PEMopenssl pkcs12 -in certificado.pfx -out certificado.pem -nodes
# Eliminar passphrase de clave PEMopenssl rsa -in clave-cifrada.pem -out clave-descifrada.pemVerificar firmas
xmlsec1 --verify factura-firmada.xml