如何将pfx转换为共享主机上的crt/pem,如使用PHP脚本的Godaddy?
问题描述:
我需要使用PFX文件创建数字签名的PDF。我为此使用TCPDF,但TCPDF与PEM/CRT文件一起使用。 如果我上传共享主机上的文件,并尝试转换文件,它总是零KB。如何将pfx转换为共享主机上的crt/pem,如使用PHP脚本的Godaddy?
这是我试过的代码。
exec('openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key');
答
几个可能性:
- 我相信,你既需要私钥和证书数字签名,在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扩展名的新文件。 –
当您从命令行执行'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
谢谢!但我想出来了......分别用.key和.cer扩展名分别提取私钥和证书。 @jww –