2017-10-17 15 views
0

PFXファイルでデジタル署名されたPDFを作成する必要があります。私はこれにTCPDFを使用していますが、TCPDFはPEM/CRTファイルで動作します。 ファイルを共有ホスティングにアップロードしてファイルを変換しようとすると、ファイルは常にゼロKBになります。私はPHP Scriptを使ってGodaddyのような共有ホスティングでpfxをcrt/pemに変換できますか?

これは私が試したコードです。

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

コマンドラインから 'openssl pkcs12 -in cert.pfx -nocerts -out keyfile-encrypted.key'を実行するとどうなりますか?おそらく、 "openssl pkcs12" site: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 -outキーファイル - encrypted.key'、$出力、$ retval);

$output変数にはコマンドの出力が含まれている必要があります。 $retval変数には戻りコードが格納されます。このコードは、opensslのドキュメントをチェックすることができます。

+0

ありがとう!私はそれを理解しました。 秘密鍵と証明書は、それぞれ.keyと.cer拡張子で別々の新しいファイルに抽出されました。 –

関連する問題