web-dev-qa-db-ja.com

cURLで自己署名証明書を使用しますか?

flask自己署名証明書を使用して実行中のアプリケーションがあります。次を使用してcurl要求を送信できます。

curl -v -k -H "Content-Type: application/json" -d '{"data":"value1","key":"value2"}' https://<server_ip>:<port>

詳細ログは、すべてがうまくいったことを示しています。

-k(--insecure)オプションの使用を避け、代わりにcurlが使用できる.pemファイルを指定したかったのです。 curlのmanページを見ると、--certオプションを使用してこれを実行できることがわかりました。そこで、これを使用して.pemファイルを作成しました。

openssl rsa -in server.key -text > private.pem

Private.pemファイルを使用すると、CURLから次のエラーがスローされます。

curl: (58) unable to use client certificate (no key found or wrong pass phrase?)

助言がありますか? -または、これは適切に署名された証明書でのみ可能ですか?

Tnx

23
wholly_cow

これはこの質問の別のバージョンです: opensslを使用してサーバーから証明書を取得する

またはもっと率直に言って:

curl --cert の使用は間違っています。これはクライアント証明書用です。

まず、サーバーが使用している証明書を取得します。

$ echo quit | openssl s_client -showcerts -servername server -connect server:443 > cacert.pem

-servernameは、適切な仮想サーバーの証明書を取得するためにSNIに必要です。

次に、curlコマンドラインでそのセットを使用して、以降の操作でサーバーを検証します。

$ curl --cacert cacert.pem https://server/ [and the rest]
48
Daniel Stenberg