Неподдерживаемые шифры openssl с python запросами - PullRequest
0 голосов
/ 19 апреля 2020

Я нахожусь на Ма c и пытаюсь использовать мою локальную среду для скрининга сайта со старым TLS (1.0). Я использую python 3.7x и чтобы установить его, я заварил openssl (OpenSSL 1.0.2p).

Я могу свернуть сайт через MacOS и подключиться через openssl (версия по умолчанию для MacOS - libressl).

> openssl s_client -connect site_name.com:443
---
No client certificate CA names sent
---
SSL handshake has read 4259 bytes and written 514 bytes
---
New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DES-CBC3-SHA
    Session-ID: 480400009FCE3C51847DB9E466C0746B1D7783AD7BF3C6B927F52DF2EA638E8F
    Session-ID-ctx: 
    Master-Key: D23BFDDBDE6DBA79D9BDA07EB3C82C24B3624866BBC86AF02C7105CD59C3BDB3B5AC71CB58D328FF67AEF9FD625CF87D
    Start Time: 1587310662
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

Заваренная версия openssl полностью блокирует сайт, то есть requests / urllib3 не может подключиться:

> openssl s_client -connect site_name.com:443
CONNECTED(00000003)
4538068588:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1587310619
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

Шифр ​​DES-CBC3-SHA, который не поддерживается openssl 1.0.2p (устанавливается через brew). С помощью запросов я пытался отключить требование verify, но все равно не удается.

r = requests.get(url, verify=False)

requests.exceptions.SSLError: HTTPSConnectionPool(host='public.site_name.com', port=443): Max retries exceeded with url: /webroot/default.htm (Caused by SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')")))

Если не считать раскручивание другой среды и установку более старой версии openssl, есть ли способ разрешить мне подключиться к этому сайту? Это небольшой проект, и я только загружаю данные, поэтому не беспокоюсь о безопасности.

...