簡體   English   中英

通過SSLv3向HTTPS服務器發出Python REST請求

[英]Python REST request to HTTPS server with SSLv3

我正在嘗試從URL檢索數據,但是由於此錯誤,我的連接被阻止了:

requests.exceptions.SSLError: HTTPSConnectionPool(host='securehost', port=4443): Max retries exceeded with url: secureURL (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert handshake failure')],)",),))

到目前為止,我認為我收到此錯誤是因為他們無法就使用的SSL密碼達成共識。

請求庫中的默認SSL類型為:

TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!eNULL:!MD5

但是,當我在服務器上運行curl -v時,我嘗試從中請求數據:

$ curl -v SecureLink
* timeout on name lookup is not supported
*   Trying 8.8.8.8...
* TCP_NODELAY set
* Connected to SecureLink (8.8.8.8) port 4443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / DES-CBC3-SHA
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: OU=Domain Control Validated; CN=secureDomain
*  start date: Sep  1 17:52:38 2016 GMT
*  expire date: Sep  1 17:52:38 2019 GMT
*  subjectAltName: host "secureHost" matched cert's "secureHost"
*  issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certs.
godaddy.com/repository/; CN=Go Daddy Secure Certificate Authority - G2
*  SSL certificate verify ok.
> GET Link HTTP/1.1
> Host: secureHost&Port
> User-Agent: curl/7.55.0
> Accept: */*

我嘗試通過以下方式編輯默認密碼:

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':RC4-SHA'

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':DES-CBC3-SHA'

無濟於事。

非常感謝通過請求庫建立此成功連接的任何幫助。

到目前為止,我的代碼是:

import requests
import json
import ssl
from urllib3.contrib import pyopenssl
import MySQLdb

params = {"t": "8IBYCELFMTKRI08K5T9YUKPN7K21YZQZ0PXV"}


print(requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS)
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'ALL:eNULL'

s = requests.Session()

print(requests.get('secureURL', params=params, timeout=5, verify=False).text)

我正在使用Python 2.7.13。 我安裝的軟件包是:

  1. asn1crypto 0.22.0
  2. 認證2017.7.27.1
  3. cffi 1.10.0
  4. 霞多麗3.0.4
  5. 密碼學2.0.3
  6. 枚舉34 1.1.6
  7. IDNA 2.6
  8. ip地址1.0.18
  9. pyOpenSSL 17.3.0
  10. pycparser 2.18
  11. 要求2.18.4
  12. urllib3 1.22

據我所知,錯誤是sslv3握手失敗。

即使我在網絡上,我也需要使用VPN連接才能運行腳本。 我不確定為什么會這樣,但是如果沒有VPN連接,它將無法正常工作。 我希望這可以幫助某人一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM