CURLを使用するリンクチェッカーが、SSL証明書の検証に失敗するケースが増えていることに気づきました。私はこれの底に到達しようとしています。
https://www.bgetem.de/ たとえば、Windows 7マシンのすべてのブラウザー(IE 11、Firefox、Opera、Chrome)では問題なく開きますが、cURL(およびwget)ではCentOS 6とUbuntu 16.04で証明書を検証できません。
これは、CentOSからのcURLの詳細な出力です(バージョンcurl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
)
_* About to connect() to www.bgetem.de port 443 (#0)
* Trying 193.104.3.166... connected
* Connected to www.bgetem.de (193.104.3.166) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* Peer's certificate issuer is not recognized: 'CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB'
* NSS error -8179
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates
_
そしてUbuntu(バージョンcurl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
):
_* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 695 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
* Closing connection 0
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
_
どのような問題があり、どのように私はそれを修正することができますか?
エラーメッセージですでに説明されているように、サーバー証明書はCAfileからの既知のCA証明書で認証できません:/etc/pki/tls/certs/ca-bundle.crt
(サーバー証明書はシステムに不明なCAによって発行されるため)。
このようなメッセージの2つのかなり一般的な理由:
ドメイン名を含めていただきありがとうございます。これにより、SSLサーバーをテストして テストでき、確認します 。CAチェーンが不完全です:
そのサーバーの管理者は、チェーンファイルを修正して、認定パスの「追加のダウンロード」セクションを防ぐことができます。
あなたがそのサーバーの管理者ではなく、そのクライアント側を修正したい場合: その中間証明書をダウンロードしてください 自分と ローカルトラストストアに追加します 。