2017-10-17 91 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擴展名的新文件。 –