正確に何が起こっているのかわかりませんが、curlはスイッチを追加しないと安全なページを取得できないことに気づきました。
~# curl -v https://api.dreamhost.com
* About to connect() to api.dreamhost.com port 443 (#0)
* Trying 75.119.208.14...
* connected
* Connected to api.dreamhost.com (75.119.208.14) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
(hangs for a minute)
* Unknown SSL protocol error in connection to api.dreamhost.com:443
* Closing connection #0
curl: (35) Unknown SSL protocol error in connection to api.dreamhost.com:443
ここで、-1(force tlsv1)または-3(force sslv3)を追加すると、curlは問題なく機能します。問題は、pythonスクリプトのように、他のプログラムにも同様の問題があるように見えることです。
Opensslを試してみると、curlのようにハングします
openssl s_client -connect api.dreamhost.com:443
CONNECTED(00000003)
(HANGS)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 320 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
-tls1_2を使用しても同じことが起こりますが、-ssl3スイッチを使用すると機能します
追加データ:
OpenSSL> version
OpenSSL 1.0.1e 11 Feb 2013
これを修正してcurlまたはopensslをデフォルト設定で機能させる方法を知っている人はいますか?スイッチなしで両方のコマンドを完璧に実行できるDebianlennyを搭載した別のマシンがあります。
ありがとう!
-ロドリゴ
このサイトを SSLLabs test に対して実行すると、 長いハンドシェイクに耐えられない であることがわかります。これは、OpenSSLのバージョンに確かに影響する問題です。
暗号リストのサイズを小さくすると、次のようになります。
openssl s_client -cipher RSA -connect api.dreamhost.com:443
(curl
には--ciphers
オプションを使用できます。)
同じ問題が発生していたので、先に進んでDreamhostにチケットを提出しました(上記の@Brunoの分析に基づく)。数週間かかりましたが、実際に修正しました。彼らがおそらく私を技術サポート地獄に置いたであろう他の会社。
ca-certificates
パッケージが正しくインストールされていることを確認してください。インストールされている場合は、誤ってファイルを削除してしまった可能性があり、再インストールする必要があります。
Sudo apt-get install --reinstall ca-certificates