自己署名SSL証明書を使用して開発サイトを実行しているローカル開発サーバーの1つにcurlリクエストを送信しようとしています。コマンドラインからcurlを使用しています。
証明書のリストに追加したり、特定の(自己署名した)証明書を有効として指定したりできることを言及しているブログ投稿をいくつか見ましたが、--no-check-certificate
のように、ssl証明書を「確認しない」という包括的な方法がありますそのwgetは持っていますか?
はい。 manpage から:
-k、-insecure
(TLS)デフォルトでは、curlが作成するすべてのSSL接続は安全であることが確認されています。このオプションを使用すると、安全でないと見なされたサーバー接続でもcurlが続行して動作します。
サーバーの接続は、サーバーの証明書に正しい名前が含まれていることを確認し、証明書ストアを使用して正常に確認されます。
詳細については、このオンラインリソースを参照してください: https://curl.haxx.se/docs/sslcerts.html
--proxy-insecureおよび--cacertも参照してください。
そのマンページのエントリで言及されている reference は、-k
の特定の動作の一部を説明しています。
これらの動作は、 BadSSL.com からページをテストするcurl
リクエストで観察できます。
curl -X GET https://wrong.Host.badssl.com/
curl: (51) SSL: no alternative certificate subject name matches target Host name 'wrong.Host.badssl.com'
curl -k -X GET https://wrong.Host.badssl.com/
..returns HTML content...
次のコマンドを使用して、すべての接続に変更を適用できます。
$ echo insecure >> ~/.curlrc
Windowsでは、_curlrc
、%HOME%
、%CURL_HOME%
、%APPDATA%
または%USERPROFILE%
ディレクトリに「安全でない」テキストを含む%USERPROFILE%\Application Data
テキストファイルを作成するだけです。
上記のソリューションを使用する利点は、すべてのcurl
コマンドで機能することですが、安全でない信頼されていないホストに接続することで MITM attack が発生する可能性があるため、お勧めしません。
自己署名証明書を使用しています。信頼できるCAバンドル(Linux)にCAを追加したり、信頼できる証明書ストア(Windows)に追加したりしないのはなぜですか?または、単に--cacert /Path/to/file
は、信頼できる自己署名証明書ファイルの内容に置き換えます。
他の答えは、wget
に相当する質問に答えています。ただし、真の質問は、curl
を使用して自己署名証明書との信頼できる接続をどのように維持するかです。多くのコメントに基づいて、セキュリティはこれらの回答のいずれかで最大の懸念事項であり、最良の回答は自己署名証明書を信頼し、curl
sセキュリティチェックをそのままにしておくことです。