web-dev-qa-db-ja.com

12.04.4サーバーは一般的なSSL証明書を検証できません。通常の修正は失敗します

問題

ファームに1台のサーバーがあり、突然SSL証明書を正しく処理できなくなりました。 curl -v https://google.comのようなcurlコマンドを実行しようとすると、次の結果になります。

curl -v https://google.com
* About to connect() to google.com port 443 (#0)
*   Trying 74.125.137.101... connected
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

openssl s_clientの使用はもう少し詳細です。

# openssl s_client -Host google.com -port 443
CONNECTED(00000003)
depth=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate

これまでに試行したこと

  • ca-certificatesを再インストールすると、aptitudeVersion: 20130906ubuntu0.12.04.1に応じて、既に最新バージョンが利用可能になります。

  • ca-certificates経由でdpkg-reconfigureを再構成します。これは/etc/ssl/certsフォルダーを再ハッシュするように見えますが、問題には影響しません。

  • update-ca-certificates --freshを使用して、そのフォルダー内のシンボリックリンクを再生成します

  • curl.haxx.seから最新のMozilla caバンドルを取得します。その.pemファイルを/etc/ssl/certsに入れ、更新コマンドを実行します。

風変わり

curlが見つけられないと主張する証明書は、実際に認証パスにあります。

# ls -l /etc/ssl/certs/*Geo*

lrwxrwxrwx 1 root root 57 Apr  7 15:57 /etc/ssl/certs/GeoTrust_Global_CA.pem -> /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
...

参照されている証明書ファイルには、ネットワーク上の他のすべてのボックスと同じ権限、つまり644があります。

# ls -l /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
-rw-r--r-- 1 root root 1216 Feb 20 11:49 /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt

Githubなどの他のセキュリティで保護されたサイトは、異なる証明書で同じ問題を示しています。 curlopenssl、およびca-certificatesを含む、Ubuntu 12.04.4のすべてのパッケージで利用可能な絶対最新バージョンを実行しています。

何が起きてる?

7
Mikey T.K.

この問題は、数回の更新後に発生しなくなりました。 Ubuntuリポジトリで提供されるca証明書ファイルには、GeoTrustの中間証明書が欠落しているようです。

0
Mikey T.K.

私もこの問題を抱えています、これを試してください:

openssl s_client -Host google.com -port 443

このコマンドは、証明書チェーンも出力します。最後のものは次のとおりです。

s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA

i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority

https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem も必要です。

この証明書パスは、ブラウザ(IE、Firefox、Chrome)に表示される証明書パスとは異なります。理由はわかりませんが、これで問題が解決します。

2
ellusak