Yêu cầu sử dụng thư viện tiêu chuẩn Python ssl mô-đun dưới mui xe - điều này hỗ trợ các phiên bản SSL và TLS khác nhau. Bạn có thể yêu cầu sử dụng giao thức cụ thể (như TLSv1) bằng cách tạo một HTTPAdapter
tùy chỉnh cá thể PoolManager được tạo.
Tôi phải làm một cái gì đó như thế này, nhưng bị cắn bởi thực tế rằng chúng tôi cũng đã đi qua một proxy - trong trường hợp đó phương pháp init_poolmanager
không được gọi, bởi vì nó sử dụng một ProxyManager
thay thế. Tôi đã sử dụng điều này:
class ForceTLSV1Adapter(adapters.HTTPAdapter):
"""Require TLSv1 for the connection"""
def init_poolmanager(self, connections, maxsize, block=False):
# This method gets called when there's no proxy.
self.poolmanager = poolmanager.PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1,
)
def proxy_manager_for(self, proxy, **proxy_kwargs):
# This method is called when there is a proxy.
proxy_kwargs['ssl_version'] = ssl.PROTOCOL_TLSv1
return super(ForceTLSV1Adapter, self).proxy_manager_for(proxy, **proxy_kwargs)
phiên bản Python của bạn là gì? [SO Hỏi & Đáp] (http://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support) có thể cung cấp cho bạn một số thông tin chi tiết. – Anzel
… và thư viện ssl nào bạn đang sử dụng phiên bản nào? –