Назад | Перейти на главную страницу

SSL-соединение с IP-адресом сервера

У меня есть сервер, к которому оборудование в удаленных местах в частных сетях подключается через Интернет с помощью SSL. Установлен сертификат SSL для доменного имени сервера. У меня есть несколько устройств, которые проходят через прокси-сервер для подключения к серверу и не могут использовать доменное имя для подключения, а вместо этого используют IP-адрес сервера. Некоторые устройства подключаются и обмениваются данными успешно. У меня есть новый, который выдает ошибку сертификата, когда пытается подключиться и не общается. Журнал WireShark для проблемного устройства выглядит следующим образом:

No.     Time        Source                Destination           Protocol Length Info
     75 124.992557  cc.e.135.194          aaa.bb.165.30         HTTP     93     CONNECT xxx.yy.177.237:443 HTTP/1.1 

No.     Time        Source                Destination           Protocol Length Info
     76 124.992762  aaa.bb.165.30         cc.e.135.194          TCP      60     http-alt > screencast [ACK] Seq=1 Ack=40 Win=5840 Len=0

No.     Time        Source                Destination           Protocol Length Info
     77 125.019946  aaa.bb.165.30         cc.e.135.194          HTTP     93     HTTP/1.1 200 Connection established 

No.     Time        Source                Destination           Protocol Length Info
     78 125.021486  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=40 Ack=40 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     79 125.023154  cc.e.135.194          aaa.bb.165.30         TLSv1    112    Client Hello

No.     Time        Source                Destination           Protocol Length Info
     80 125.063292  aaa.bb.165.30         cc.e.135.194          TCP      60     http-alt > screencast [ACK] Seq=40 Ack=98 Win=5840 Len=0

No.     Time        Source                Destination           Protocol Length Info
     81 125.802441  aaa.bb.165.30         cc.e.135.194          TLSv1    590    Server Hello

No.     Time        Source                Destination           Protocol Length Info
     82 125.802545  aaa.bb.165.30         cc.e.135.194          TCP      590    [TCP segment of a reassembled PDU]

No.     Time        Source                Destination           Protocol Length Info
     83 125.803882  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=98 Ack=576 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     84 125.806427  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=98 Ack=1112 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     85 125.835481  aaa.bb.165.30         cc.e.135.194          TCP      590    [TCP segment of a reassembled PDU]

No.     Time        Source                Destination           Protocol Length Info
     86 125.835606  aaa.bb.165.30         cc.e.135.194          TCP      590    [TCP segment of a reassembled PDU]

No.     Time        Source                Destination           Protocol Length Info
     87 125.835607  aaa.bb.165.30         cc.e.135.194          TLSv1    98     Certificate

No.     Time        Source                Destination           Protocol Length Info
     88 125.837384  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=98 Ack=1648 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     89 125.839309  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=98 Ack=2184 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     90 125.996227  cc.e.135.210          cc.e.135.223          UDP      93     Source port: di-traceware  Destination port: di-traceware

No.     Time        Source                Destination           Protocol Length Info
     91 126.041261  aaa.bb.165.30         cc.e.135.194          TCP      98     [TCP Retransmission] http-alt > screencast [PSH, ACK] Seq=2184 Ack=98 Win=5840 Len=44[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]

No.     Time        Source                Destination           Protocol Length Info
     92 126.126265  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [ACK] Seq=98 Ack=2228 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     93 126.127579  cc.e.135.194          aaa.bb.165.30         TLSv1    61     Alert (Level: Fatal, Description: Bad Certificate)

No.     Time        Source                Destination           Protocol Length Info
     94 126.127769  aaa.bb.165.30         cc.e.135.194          TCP      60     http-alt > screencast [ACK] Seq=2228 Ack=105 Win=5840 Len=0

No.     Time        Source                Destination           Protocol Length Info
     95 126.128131  cc.e.135.194          aaa.bb.165.30         TCP      60     screencast > http-alt [FIN, ACK] Seq=105 Ack=2228 Win=3600 Len=0

No.     Time        Source                Destination           Protocol Length Info
     96 126.128973  cc.e.135.194          aaa.bb.165.30         TCP      60     [TCP Dup ACK 95#1] screencast > http-alt [ACK] Seq=106 Ack=2228 Win=3600 Len=0

Журнал WireShark для хорошего подключения устройства выглядит следующим образом:

No.     Time           Source                Destination           Protocol Length Info
     41 18.643335000   192.168.1.77          192.168.1.66          HTTP     93     CONNECT xxx.yy.177.237:443 HTTP/1.1 

No.     Time           Source                Destination           Protocol Length Info
     42 18.686919000   xxx.yy.177.237        192.168.1.66          TCP      66     https > 57090 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1

No.     Time           Source                Destination           Protocol Length Info
     43 18.690931000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=40 Ack=62 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     44 18.692715000   192.168.1.77          192.168.1.66          HTTP     112    Continuation or non-HTTP traffic

No.     Time           Source                Destination           Protocol Length Info
     45 18.730597000   xxx.yy.177.237        192.168.1.66          TCP      1514   [TCP segment of a reassembled PDU]

No.     Time           Source                Destination           Protocol Length Info
     46 18.731017000   xxx.yy.177.237        192.168.1.66          TCP      1514   [TCP segment of a reassembled PDU]

No.     Time           Source                Destination           Protocol Length Info
     47 18.853088000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=598 Win=3600 Len=0
No.     Time           Source                Destination           Protocol Length Info
     48 18.855235000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=1134 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     49 18.857397000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=1670 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     50 18.858940000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=2206 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     51 18.860676000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=2742 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     52 18.861709000   192.168.1.77          192.168.1.66          TCP      60     iee-qfx > 808 [ACK] Seq=98 Ack=2982 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     53 18.885573000   xxx.yy.177.237        192.168.1.66          TLSv1    456    Server Hello, Certificate, Server Hello Done

No.     Time           Source                Destination           Protocol Length Info
     54 19.831490000   192.168.1.77          192.168.1.66          HTTP     380    Continuation or non-HTTP traffic

No.     Time           Source                Destination           Protocol Length Info
     55 19.832368000   192.168.1.77          192.168.1.66          TCP      60     [TCP Dup ACK 54#1] iee-qfx > 808 [ACK] Seq=424 Ack=3384 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     56 19.833752000   192.168.1.77          192.168.1.66          TCP      60     [TCP Dup ACK 54#2] iee-qfx > 808 [ACK] Seq=424 Ack=3384 Win=3600 Len=0

No.     Time           Source                Destination           Protocol Length Info
     57 19.883478000   xxx.yy.177.237        192.168.1.66          TLSv1    113    Change Cipher Spec, Encrypted Handshake Message

No.     Time           Source                Destination           Protocol Length Info
     59 19.910346000   192.168.1.77          192.168.1.66          HTTP     251    Continuation or non-HTTP traffic

No.     Time           Source                Destination           Protocol Length Info
     60 20.115266000   192.168.1.77          192.168.1.66          TCP      107    [TCP segment of a reassembled PDU]

No.     Time           Source                Destination           Protocol Length Info
     61 20.136330000   xxx.yy.177.237        192.168.1.66          TCP      54     https > 57090 [ACK] Seq=3382 Ack=582 Win=65024 Len=0

No.     Time           Source                Destination           Protocol Length Info
     62 20.171317000   xxx.yy.177.237        192.168.1.66          TLSv1    299    Application Data

Может ли кто-нибудь дать представление о том, что здесь происходит и почему одни устройства обмениваются данными, а другие - нет, и какие передовые методы должны быть здесь (должен ли я получить сертификат для IP-адреса?). Интуитивно мне кажется, что мой сертификат предназначен для доменного имени, а не для IP-адреса, и поэтому должны быть проблемы, но у меня есть ряд устройств, которые годами поддерживали связь таким образом без проблем.

Предоставляемый вами дамп wirehark бесполезен, потому что он показывает информацию только на транспортном уровне (TCP), а не на уровне TLS. Он также не показывает никаких сообщений об ошибках от клиентов и не показывает, как клиенты используют эти прокси и как они проверяют сертификат.

Обычно для подключения TLS требуется проверка сертификата сервера, что включает в себя проверку цепочки доверия и имени в сертификате. Если имя не соответствует ожидаемому имени, проверка должна завершиться неудачей, потому что в противном случае вы могли бы использовать любой сертификат, выдавая себя за какой-либо другой хост, и, таким образом, провести атаку «человек посередине».

Это также означает, что если доступ осуществляется только по IP-адресу, тогда сертификат должен включать IP-адрес в качестве типа IP в разделе альтернативных имен субъектов (а лучше также в качестве типа DNS из-за некоторых сломанных стеков TLS).

Если некоторые клиенты терпят неудачу, а другие преуспевают, возможно, одни клиенты используют правильное имя хоста для проверки, а другие - нет, или некоторые клиенты игнорируют ошибки проверки. На основании вашей информации невозможно узнать, что из этого имеет место.

У меня есть несколько устройств, которые проходят через прокси-сервер для подключения к серверу и не могут использовать доменное имя для подключения, а вместо этого используют IP-адрес сервера.

Правильный клиент создает туннель с помощью HTTP-прокси (запрос CONNECT), а затем устанавливает TLS-соединение внутри этого туннеля и проверяет сертификат на соответствие исходному имени хоста. Вот как работают прокси-соединения в браузерах. И это то, что показывает ваш дамп wirehark. Обычно клиент предоставляет не IP-адрес цели в запросе CONNECT, а имя хоста, поэтому это может быть клиент, который либо разрешил имя хоста заранее, либо которому был предоставлен IP-адрес, а не имя хоста внутри конфигурации. В последнем случае клиент не сможет правильно проверить сертификат, потому что он не знает имя хоста, ожидаемого в сертификате, но будет ожидать IP-адрес, которого нет.