次のCURLコマンドを実行しようとしていますが、SSL証明書エラーが表示されます。
curl https://example.com:8443/cli/agentCLI -u username:password
エラー:
curl:(60)SSL証明書の問題。CA証明書に問題がないことを確認してください。詳細:エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed詳細はこちら: http://curl.haxx.se/docs/sslcerts.html
curlはデフォルトで、認証局(CA)公開鍵(CA証明書)の「バンドル」を使用してSSL証明書の検証を実行します。デフォルトのバンドルはcurl-ca-bundle.crtという名前です。 --cacertオプションを使用して代替ファイルを指定できます。このHTTPSサーバーがバンドルで表されるCAによって署名された証明書を使用する場合、証明書の問題が原因で証明書の検証が失敗した可能性があります(有効期限が切れているか、URLのドメイン名と一致しない可能性があります)。 curlによる証明書の検証を無効にする場合は、-k(または--insecure)オプションを使用します。
SSL URLを許可するためにこの問題を修正するにはどうすればよいですか?
サーバーで自己署名証明書を使用している場合は、次を使用できます。
curl -k https://example.com:8443/cli/agentCLI -u username:password
ただし、通信がセキュリティで保護されなくなり、あらゆる種類の中間者攻撃が可能になるため、サーバーへの非SSL接続を使用するよりも優れていることに注意してください。
あなたへの私のアドバイスは、サーバーから.pem
をダウンロードすることです:
/etc/ssl/
にあります 、使用して:
echo "HEAD / HTTP/1.0\n Host: example.com\n\n EOT\n" | openssl s_client -prexit -connect example.com:8443 > cert.pem
コンピューターに、ファイル内のBEGIN CERTIFICATE
とEND CERTIFICATE
の間の部分(BEGIN/END行を含む)のみを保持し、--cacert
オプションのパラメーターとしてそれをダウンロードすることもできます。 。その後、接続するたびにサーバーを認証します!
curl --cacert cert.pem https://example.com:8443/cli/agentCLI -u username:password
自分の自己署名サーバーでテストすると、うまく機能しています:
% openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----' > cert.pem
% curl --cacert cert.pem https://example.com
動作するはずの例:
% openssl s_client -showcerts -connect git.cryptolib.org:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----' > cert.pem
% curl --cacert cert.pem https://git.cryptolib.org
curl: (51) SSL: certificate verification failed (result: 5)
しかし、悲しいことにそうではありません。
提案されたように、私もやろうとしました こちら :
% openssl x509 -inform PEM -in cert.pem -text -out certdata.pem
% curl --cacert certdata.pem https://git.cryptolib.org
私がテストに使用しているサイト(git.cryptolib.org)は自己署名されていないため、これは機能していませんが、CACertチェーンからのものであり、これに続くCACertルート証明書を使用して解決できます [〜#〜] faq [〜#〜] 。
digへのいくつかのリソース:
しかし、これまで決定的な答えはありません:-s