善于使用证书签署PDF

时间:2014-12-15 11:07:21

标签: pdf openssl certificate sign

我尝试使用证书在PHP脚本中签名PDF。到目前为止,我使用命令行生成的自签名.crt文件执行测试:

openssl req -x509 -nodes -days 365000 -newkey rsa:1024 \
            -keyout tcpdf.crt -out tcpdf.crt

(是的,我使用tcpdf)。它工作正常。

但是知道,我的公司给了我真正的证书(来自tbs-certificats),我有点失望:我是.cer,.pem和.p7b文件...

我尝试在我的脚本中使用它们,但我发现了错误

Warning: openssl_pkcs7_sign(): error getting private key

我使用自签名证书的代码:

// set certificate file
$certificate = 'file://data/cert/tcpdf.crt';

// set document signature
$pdf->setSignature($certificate, $certificate);

我可以改变一下吗?我对加密世界不太熟悉......

1 个答案:

答案 0 :(得分:0)

首先,我们必须将您的脚本指向现有文件。在这种情况下,.cer文件将包含证书,因此请尝试使用而不是" /path/file.CRT"。


现在文件扩展名与证书编码的方式有点无关,我担心,即使名称引起一些混淆,请参阅this reference

我不知道tcpdf是否支持pem和der编码文件,因为缺少文档。他们可能会这样做,但为了以防万一,这里有解决方法。测试命令将为您提供无法加载证书的权利。如果您采用错误的编码,则会出错。

  • 测试pem编码文件:openssl x509 -in cert.cer -text -noout
  • 测试编码文件:openssl x509 -in certificate.der -inform der -text -noout
  • 从PEM转换为DER openssl x509 -in cert.cer -outform der -out cert.der
  • 从DER转换为PEM openssl x509 -in cert.cer -inform der -outform pem -out cert.pem