Tôi có một API REST được viết bằng Java đang chạy dưới JBoss. Gần đây, chúng tôi đã cập nhật JVM của mình từ 1,6 lên 1,7. Điều này bắt đầu gây ra vấn đề chỉ với các khách hàng Python của chúng tôi đang kết nối. Không liên tục, các máy khách Python đang bị lỗi bắt tay. Chúng tôi đã viết một bài kiểm tra rất đơn giản mà tái tạo các vấn đề:Không liên tục "sslv3 alert handshake failure" dưới Python
import httplib2
for i in range(1,500):
print i
response, content = httplib2.Http(disable_ssl_certificate_validation=True).request('https://server.com:8443',)
Đưa đầu ra sau đây:
.
.
.
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
Cuộc gọi thứ 67 thất bại trên hoạt động này thông qua, nhưng nó không thành công tại những thời điểm khác nhau mỗi lần kiểm tra là chạy.
Các ứng dụng khách khác của chúng tôi (Java, Groovy và Ruby) không có vấn đề gì.
Nếu tôi chuyển JVM trở lại 1.6 lỗi dừng.
tôi đã làm một kiểm tra openssl sử dụng:
openssl s_client -connect server.com:8443
và nó trở lại này:
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)
Mà dường như chính xác, nhưng tôi không chắc chắn. Nếu nó thất bại trong mọi cuộc gọi thì đó sẽ là một chuyện, nhưng thật kỳ quặc khi chỉ thất bại một lần ngẫu nhiên. Bất cứ ai nhìn thấy điều này?
Bạn đã xóa tất cả mật mã DHE hay chỉ một mật khẩu mà bạn đã liệt kê? Tôi đã cắt giảm danh sách mật mã của mình do quét bảo mật phàn nàn về việc hỗ trợ mật mã yếu.Dưới đây là danh sách Tôi hiện đang sử dụng: 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 –
Tôi chỉ loại bỏ các thuật toán mã hóa DHE và các lỗi bắt tay đã mất hết. Cảm ơn một tấn. Không chắc tôi đã tìm thấy điều đó! –