pkcs12証明書が必須のWebサービスに接続する必要があります。アイデアは、bashスクリプトでcurlを使用することでした(具体的には、OS Xで)。
curlが通信でできないことの1つは、pkcs12証明書(.p12)を処理することです。私のオプションは何ですか?
私は証明書をPEM形式に変換することはうまくいくと読んだことがあります(opensslを使用)が、PEMを取得し、PKCS12証明書を要求するWebサービスと通信する必要があることをcurlに伝える方法がわかりません。
pkcs12をpemに変換することはこのように行われます(たとえば)、それは私にとってはうまくいきましたが、curlでうまく使用していません:
openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys
ヒントはありますか?または、カールの代替手段はありますか?ソリューションはコマンドラインベースでなければなりません。
あなたはすでに解決していると思いますが、私は同じ問題を抱えていました。ソリューションを共有するために答えます。
.p12ファイルがある場合、あなたのアプローチは正しいです。まず、証明書とキーをp12ファイルから分離して取得する必要があります。例として、mycert.p12ファイルを実行している場合
openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys
次に、URLを呼び出す必要があります。たとえば、特定のWebサービスのwsdlを取得すると仮定します
curl -E ./file.crt.pem --key ./file.key.pem https://myservice.com/service?wsdl
ファイルfile.crt.pemとfile.key.pemが作業フォルダーにある場合、「./」は必須です。
新しいカールがあるかどうかを確認します。新しいバージョンはPKCS12を完全に処理できます。
curl --cert-type P12 --cert cert.p12:password https://yoursite.com