LINUX.ORG.RU

Доступ по HTTPS с помощью разных клиентов

 , , ,


0

1

Всем здравствуйте.

Дано: есть некий HTTPS-ресурс, про который известно, что он может отвечать, используя TLS 1.2. И есть правильно (до определённой степени) настроенные iptables:

# HTTP traffic blocked by the ISP                                                                                            
-A INPUT -p tcp --sport 80 -m string --string "Location: http://195.94.233.66?UrlRedir=http%3A%2F%2F" --algo bm -j DROP
-A INPUT -p tcp --sport 80 -m string --string "Location: http://stop.seven-sky.net" --algo bm -j DROP
-A INPUT -p tcp --sport 80 -m string --string "Location: http://95.167.13.50/?st" --algo bm -j DROP
-A INPUT -p tcp --sport 80 -m string --string "Location: http://blackhole.beeline.ru" --algo bm -j DROP

# HTTPS traffic blocked by the ISP
-A INPUT -p tcp --sport 443 --tcp-flags RST RST -j DROP

И вот теперь я пытаюсь зайти на этот самый ресурс по HTTPS:

$ wget --inet4-only --https-only --secure-protocol=TLSv1_2 -O - https://www.linkedin.com
--2021-10-06 14:33:28--  https://www.linkedin.com/
Resolving www.linkedin.com (www.linkedin.com)... 13.107.42.14
Connecting to www.linkedin.com (www.linkedin.com)|13.107.42.14|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 88377 (86K) [text/html]
Saving to: ‘STDOUT’

-                     0%[                    ]       0  --.-KB/s               <!DOCTYPE html>
<html lang=ru>
<head>
<link rel="stylesheet" type="text/css" href="/waltz/combined.css?20210926-1635">

<link rel="yandex-tableau-widget" href="/manifest.json" />
<meta name="referrer" content="always">

<title>LINUX.ORG.RU — Русская информация об ОС Linux</title>
...

Всё хорошо. А теперь попробуем то же самое с помощью curl:

$ curl -v --tlsv1.2 --tls-max 1.2 https://linkedin.com
* Expire in 0 ms for 6 (transfer 0x55acfeaa3f50)
...
* Expire in 50 ms for 1 (transfer 0x55acfeaa3f50)
*   Trying 13.107.42.14...
* TCP_NODELAY set
* Expire in 149971 ms for 3 (transfer 0x55acfeaa3f50)
* Expire in 200 ms for 4 (transfer 0x55acfeaa3f50)
* Connected to linkedin.com (13.107.42.14) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* Operation timed out after 300179 milliseconds with 0 out of 0 bytes received
* Closing connection 0
curl: (28) Operation timed out after 300179 milliseconds with 0 out of 0 bytes received

И тишина. И, что характерно, причина отнюдь не в User-Agent, потому что curl -A 'Wget/1.20.1 (linux-gnu)' -v --tlsv1.2 --tls-max 1.2 https://www.linkedin.com тоже не получает ответа.

Совершенно аналогичным образом, lynx и elinks как раз работают, а w3m, links и обычные браузеры как раз нет.

В чём разница?

Update: openssl s_client -connect www.linkedin.com:443 лишь устанавливает TCP-соединение, и не более того, так что отладочной информации, увы, нет.

Update 2: призываю всех проголосовать за Issue 908132: FR: Support for Encrypted SNI (ESNI).

★★★★★

Последнее исправление: Bass (всего исправлений: 2)
 wget ... https://www.linkedin.com

 <title>LINUX.ORG.RU — Русская информация об ОС Linux</title>

Cool, bro!

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Да, согласен, спасибо.

При отключении SNI на клиентской стороне всё работает:

$ openssl s_client -noservername -connect www.linkedin.com:443                                                                                                                         
CONNECTED(00000003)                                                                                                                
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Ro                                                   ot CA                                                                                                                              
verify return:1                                                                                                                    
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA                                                              
verify return:1                                                                                                                    
depth=0 C = US, ST = California, L = Sunnyvale, O = LinkedIn Corporation, CN = w                                                   ww.linkedin.com                                                                                                                    
verify return:1                                                                                                                    
---                                                                                                                                
Certificate chain                                                                                                                  
 0 s:C = US, ST = California, L = Sunnyvale, O = LinkedIn Corporation, CN = www.                                                   linkedin.com                                                                                                                       
   i:C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA                                                                 
 1 s:C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA                                                                 
   i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root                                                    CA                                                                                                                                 
---                                                                                                                                
Server certificate                                                                                                                 
-----BEGIN CERTIFICATE-----                                                                                                        
MIIIYjCCB0qgAwIBAgIQB3I5p15rVMjJMEDrSTLVRzANBgkqhkiG9w0BAQsFADBN

У меня появилась одна причина (ESNI) снова начать пользоваться Mozilla Firefox.

Bass ★★★★★
() автор топика
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от ValdikSS

Чорт. FF в своём репертуаре.

Bass ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.