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

Ошибка SSL-соединения только для одного сайта (из многих) на сервере

У меня есть сервер, на котором работает много веб-сайтов, каждый с SSL.
Один из сайтов сейчас отказывается подключаться по SSL. Раньше это работало, и мне нужна помощь в определении того, что было изменено.

Вот такая ситуация:
http://site1.com/ - работает
https://site1.com/ - работает
http://site2.com/ - работает
https://site2.com/ - Не работает (но раньше работал)

Оба сайта находятся на одном сервере (Win Server 2003 SP2 - IIS6)

Оба сайта используют сертификаты от одного и того же центра и оба действительны (согласно IIS).

Насколько я могу судить, на обоих сайтах сертификаты настроены идентично в IIS. (Проверено ручной / визуальной проверкой свойств, рядом)

Благодаря использованию OpenSSL я вижу, что при попытке подключиться к site2 с помощью https возникает «сбой подтверждения ssl».

Что могло быть причиной этого?

Как я могу продолжить расследование?

Без SSL-соединений, доступных для этого сайта, пользователи не могут войти в систему или зарегистрироваться. :(

отказ от ответственности: Я не админ сервера и за бокс не отвечаю. Да, здесь есть более широкие проблемы, но сначала мне нужно, чтобы это снова заработало.

редактировать
Просматривая журналы WireShark, я вижу, что в данных Интернет-протокола есть ошибка контрольной суммы при отправке Client Hello:

No.     Time        Source                Destination           Protocol Info
    119 5.734139    10.0.0.16             94.236.90.219         SSL      Client Hello

Frame 119: 112 bytes on wire (896 bits), 112 bytes captured (896 bits)
    Arrival Time: Jan  6, 2011 13:00:30.550690000 GMT Standard Time
    Epoch Time: 1294318830.550690000 seconds
    [Time delta from previous captured frame: 0.000460000 seconds]
    [Time delta from previous displayed frame: 0.000460000 seconds]
    [Time since reference or first frame: 5.734139000 seconds]
    Frame Number: 119
    Frame Length: 112 bytes (896 bits)
    Capture Length: 112 bytes (896 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:tcp:ssl]
    [Coloring Rule Name: Checksum Errors]
    [Coloring Rule String: cdp.checksum_bad==1 || edp.checksum_bad==1 || ip.checksum_bad==1 || tcp.checksum_bad==1 || udp.checksum_bad==1 || mstp.checksum_bad==1]
Ethernet II, Src: Dell_ad:44:31 (b8:ac:6f:ad:44:31), Dst: Draytek_c5:c4:44 (00:50:7f:c5:c4:44)
    Destination: Draytek_c5:c4:44 (00:50:7f:c5:c4:44)
        Address: Draytek_c5:c4:44 (00:50:7f:c5:c4:44)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: Dell_ad:44:31 (b8:ac:6f:ad:44:31)
        Address: Dell_ad:44:31 (b8:ac:6f:ad:44:31)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
Internet Protocol, Src: 10.0.0.16 (10.0.0.16), Dst: 94.236.90.219 (94.236.90.219)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 98
    Identification: 0x0a94 (2708)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (6)
    Header checksum: 0x0000 [incorrect, should be 0x2c2b]
        [Good: False]
        [Bad: True]
            [Expert Info (Error/Checksum): Bad checksum]
                [Message: Bad checksum]
                [Severity level: Error]
                [Group: Checksum]
    Source: 10.0.0.16 (10.0.0.16)
    Destination: 94.236.90.219 (94.236.90.219)
Transmission Control Protocol, Src Port: 50108 (50108), Dst Port: https (443), Seq: 1, Ack: 1, Len: 58
Secure Socket Layer
    SSL Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: SSL 3.0 (0x0300)
        Length: 53
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 49
            Version: SSL 3.0 (0x0300)
            Random
                gmt_unix_time: Jan  6, 2011 13:00:33.000000000 GMT Standard Time
                random_bytes: 8b4a18cdfc3836100a7251faf181e09e8eea795c9df0b267...
            Session ID Length: 0
            Cipher Suites Length: 10
            Cipher Suites (5 suites)
                Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
                Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
                Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
                Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
                Cipher Suite: Unknown (0x00ff)
            Compression Methods Length: 1
            Compression Methods (1 method)
                Compression Method: null (0)

И ответ:

No.     Time        Source                Destination           Protocol Info
    122 5.756401    94.236.90.219         10.0.0.16             TCP      https > 50108 [FIN, ACK] Seq=1 Ack=59 Win=65477 Len=0

Frame 122: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
    Arrival Time: Jan  6, 2011 13:00:30.572952000 GMT Standard Time
    Epoch Time: 1294318830.572952000 seconds
    [Time delta from previous captured frame: 0.009587000 seconds]
    [Time delta from previous displayed frame: 0.022262000 seconds]
    [Time since reference or first frame: 5.756401000 seconds]
    Frame Number: 122
    Frame Length: 60 bytes (480 bits)
    Capture Length: 60 bytes (480 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:tcp]
    [Coloring Rule Name: TCP SYN/FIN]
    [Coloring Rule String: tcp.flags & 0x02 || tcp.flags.fin == 1]
Ethernet II, Src: Draytek_c5:c4:44 (00:50:7f:c5:c4:44), Dst: Dell_ad:44:31 (b8:ac:6f:ad:44:31)
    Destination: Dell_ad:44:31 (b8:ac:6f:ad:44:31)
        Address: Dell_ad:44:31 (b8:ac:6f:ad:44:31)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: Draytek_c5:c4:44 (00:50:7f:c5:c4:44)
        Address: Draytek_c5:c4:44 (00:50:7f:c5:c4:44)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
    Trailer: 000000000000
Internet Protocol, Src: 94.236.90.219 (94.236.90.219), Dst: 10.0.0.16 (10.0.0.16)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 40
    Identification: 0x13f2 (5106)
    Flags: 0x02 (Don't Fragment)
        0... .... = Reserved bit: Not set
        .1.. .... = Don't fragment: Set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 115
    Protocol: TCP (6)
    Header checksum: 0x3007 [correct]
        [Good: True]
        [Bad: False]
    Source: 94.236.90.219 (94.236.90.219)
    Destination: 10.0.0.16 (10.0.0.16)
Transmission Control Protocol, Src Port: https (443), Dst Port: 50108 (50108), Seq: 1, Ack: 59, Len: 0

Редактировать 2
IIS ничего не регистрирует, так как до этого не доходит. Это ошибка уровня TCP.

Попробуйте сравнить результаты wirehark с данными хорошего сайта. Я не уверен, нормальная ошибка контрольной суммы или нет.

Некоторые вещи, которые стоит попробовать:

  • Поместите действующий сертификат с другого сайта на этот сайт, чтобы исключить его отношение к самому сертификату.
  • дважды проверьте привязки, чтобы убедиться, что они не были изменены. Вам нужен уникальный IP-адрес для привязки https, поскольку вы используете другой сертификат.
  • иногда вещи, не связанные между собой, могут перемешаться. Например, если страница перенаправляет на другой сайт, это может быть не сразу очевидно. Попробуйте протестировать страницу test.html, чтобы убедиться, что она не связана с кодом сайта.
  • попробуйте выполнить тест на разрыв ... т.е. остановите сайт на мгновение и убедитесь, что ошибка изменилась, что подтвердит, что привязки работают должным образом.