JBossで動作するJavaで書かれたREST APIがあります。最近、JVMを1.6から1.7に更新しました。これは接続していた私たちのPythonクライアントだけで問題を引き起こし始めました。断続的に、Pythonクライアントがハンドシェイクの失敗を起こしています。テストがあるたびにしてこの実行に失敗したが、それは異なる時間に失敗しPythonで断続的な "sslv3 alert handshake failure"が発生しました
.
.
.
64
65
66
67
Traceback (most recent call last):
File "api_test/test.py", line 6, in <module>
response, content = httplib2.Http(disable_ssl_certificate_validation=True).request('https://server.com:8443/rest/solidtumor/2012/id/50d3216c092c8554b8b9f384?glossary=true&api_key=APIKEY',)
File "/home/hostovic/api_test/httplib2/__init__.py", line 1445, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/home/hostovic/api_test/httplib2/__init__.py", line 1197, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/home/hostovic/api_test/httplib2/__init__.py", line 1133, in _conn_request
conn.connect()
File "/home/hostovic/api_test/httplib2/__init__.py", line 914, in connect
raise SSLHandshakeError(e)
httplib2.SSLHandshakeError: [Errno 1] _ssl.c:490: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
第67回電話を:
import httplib2
for i in range(1,500):
print i
response, content = httplib2.Http(disable_ssl_certificate_validation=True).request('https://server.com:8443',)
は、次の出力を与える:私たちは、問題を再現する非常に簡単なテストを書きました走る
他のクライアント(Java、Groovy、Ruby)は問題なく動作します。
JVMを1.6に戻すと、障害が停止します。
は、私が使用してopensslのチェックでした:openssl s_client -connect server.com:8443
をし、それがこの返さ:正しいようだ
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : EDH-RSA-DES-CBC3-SHA
Session-ID: 50E748EA341BB433EEBC7386C606313C2B8B86360ED71DC8F3B0A14A1579D91B
Session-ID-ctx:
Master-Key: 1007AC489D60FE2D818F71A5A6873D5BBF5B1770BEC31CDBF29D0562DB0D30A33D9EBBA8AD211B8E24B23494B20A6223
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1357334762
Timeout : 300 (sec)
Verify return code: 0 (ok)
を、私はよく分かりません。それがすべての呼び出しで失敗した場合、それは1つのことですが、ランダムな時間に失敗するのは本当に奇妙です。誰もこれを見た?
あなたはすべてのDHE暗号を削除しましたか、リストしたものだけを削除しましたか?弱い暗号のサポートについて不平を言うセキュリティスキャンのために私はすでに私の暗号のリストを整理していました。ここで私は、現在使用しているリストである: SSL_RSA_WITH_RC4_128_MD5、 SSL_RSA_WITH_RC4_128_SHA、 TLS_RSA_WITH_AES_128_CBC_SHA、 TLS_DHE_RSA_WITH_AES_128_CBC_SHA、 TLS_DHE_DSS_WITH_AES_128_CBC_SHA、 SSL_RSA_WITH_3DES_EDE_CBC_SHA、 SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHAは、 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA –
私はちょうどDHE暗号を削除し、ハンドシェイクエラーがなくなっています。ありがとう、トン。私はそれを見つけただろうか分からない! –