2017-10-17 60 views
0

我需要使用PFX文件创建数字签名的PDF。我为此使用TCPDF,但TCPDF与PEM/CRT文件一起使用。 如果我上传共享主机上的文件,并尝试转换文件,它总是零KB。如何将pfx转换为共享主机上的crt/pem,如使用PHP脚本的Godaddy?

这是我试过的代码。

exec('openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key'); 
+0

当您从命令行执行'openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key'时会发生什么?它可能会导致你[“openssl pkcs12”网站:stackoverflow.com](https://www.google.com/search?q=“openssl + pkcs12”+ site%3Astackoverflow.com)。 – jww

+0

谢谢!但我想出来了......分别用.key和.cer扩展名分别提取私钥和证书。 @jww –

回答

0

几个可能性:

  • 我相信,你既需要私钥和证书数字签名,在PEM形式。你已经使用了-nocerts选项,所以你只能得到私钥。删除该选项以将证书保留为PEM导出的一部分。
  • 如果您拥有的PFX文件已加密,那么您需要以某种方式将加密密码提供给openssl命令来解密PFX文件。如果您从openssl获得0KB文件,则可能会检测到请求的非交互性并退出。
  • 您需要在openssl命令中指定-nodes选项以防止openssl试图加密生成的文件。同样,如果openssl正在等待输入(加密密码),但检测到非交互式呼叫,则可能只是在不向文件写入任何内容的情况下失败。
  • 使用输出和返回在PHP中的调用exec的VAR参数来确定什么错:

    EXEC( 'OpenSSL的PKCS12 -in cert.pfx -nocerts退房手续密钥文件-encrypted.key',$输出,$ retval);

$output变量应包含从该命令的输出; $retval变量将包含返回代码,然后您可以检查openssl的文档。

+0

谢谢!但我想通了。 分别提取私钥和证书分别与.key和.cer扩展名的新文件。 –