我尝试使用证书在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);
我可以改变一下吗?我对加密世界不太熟悉......
答案 0 :(得分:0)
首先,我们必须将您的脚本指向现有文件。在这种情况下,.cer文件将包含证书,因此请尝试使用而不是" /path/file.CRT"。
现在文件扩展名与证书编码的方式有点无关,我担心,即使名称引起一些混淆,请参阅this reference。
我不知道tcpdf是否支持pem和der编码文件,因为缺少文档。他们可能会这样做,但为了以防万一,这里有解决方法。测试命令将为您提供无法加载证书的权利。如果您采用错误的编码,则会出错。
openssl x509 -in cert.cer -text -noout
openssl x509 -in certificate.der -inform der -text -noout
openssl x509 -in cert.cer -outform der -out cert.der
openssl x509 -in cert.cer -inform der -outform pem -out cert.pem