Ошибка ERR_SSL_PROTOCOL_ERROR на определённых прокси

Поддержка
  • @arcos said in Ошибка ERR_SSL_PROTOCOL_ERROR на определённых прокси:

    @sergerdn что значит "снимает"? это прокси из топ-20 по миру.

    Браузер так мне "помог", в оригинале было сниффает. И речь шла не про прокси-провайдера, а про твою локальную машину.

    Что показывает в самом BAS в сертификате?

  • @sergerdn так а при чём тут локальная машина, если это происходит только под определённым прокси. если поставить любую другую прокси - то ни единой ошибки нет:
    40cfb43b-3e37-4e08-af45-38a154660778-image.png

  • @arcos said in Ошибка ERR_SSL_PROTOCOL_ERROR на определённых прокси:

    @sergerdn так а при чём тут локальная машина, если это происходит только под определённым прокси. если поставить любую другую прокси - то ни единой ошибки нет:

    У тебя возможные варианты:

    1. Прокси провайдер выдает ошибку. Это возможно, если неправильный логин, пароль, ресурс забанен прокси-провайдером, etc. Так как соединение https, то ты видишь ошибку, net::ERR_SSL_PROTOCOL_ERROR, а не ту, что выдает прокси-провайдер.
    2. Кто-то при соединении через плохой прокси вмешивается в трафик.

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

    P.S.
    Пиши в личку телегу, ставь anydesk. Помогу отдебажить причину ошибки.

  • @sergerdn в пароле кстати есть символы ";". но я пробовал через авторизацию по айпи (т.е. без логина/пароля), и ситуация не поменялась

  • Не нашли решение?

  • Я то же заинтересован в том что бы найти решение. У меня баг воспроизводится на WIndows Server 21H2 + BAS 27.1.1. При этом с той же самой Windows коробки Chromium + Playwright или ProxyChick отлично работают с тем же прокси листом от SOAX. У меня есть возможность посмотреть логи в SOAX и тд и с самими resi device, при работе с которыми BAS выдавал ошибку, проблем не наблюдается.

    По поводу снифинга, IMHO это должно иначе выглядеть, стоковый Chrome без рутового сертификата от MITM выдаст ошибку.

    Кто-нибудь, кто шарит в BAS может со мной созвониться и вместе покопать? Для меня test.xml это филькина грамота. Может быть есть какой-то DEBUG logging в BAS что бы уидеть детали ошибки, почему конкретно не удается установить TLS сессию.
    Возможно еще кто-нибудь знает, BAS сам не пытается интерсептить сессию, он патченный Chromium использует или нет, есть какая-то специфика того, как он работает с трафиком proxy протоколами?

  • @greggyNapalm

    Не используй слишком длинные пароли или юзернейм к прокси. У BAS ограничения на длину и того и другого.

  • Повторил тест с очень короткой строчкой - не повлияло. Так же вижу net::ERR_SSL_PROTOCOL_ERROR

  • У меня была идея о том, что могут быть проблемы с ipv6 addr target ресурса. Но она не подтвердилась. Я направил тарафик на свой хост у которого только ipv4 addr и ошибка присутствует.
    Теперь я думаю о том, что возможно внутри BAS есть таймаут на установление TLS сессии и когда длительность выходит за рамки он возвращает ошибку.

  • @greggyNapalm said in Ошибка ERR_SSL_PROTOCOL_ERROR на определённых прокси:

    Так же вижу net::ERR_SSL_PROTOCOL_ERROR

    Это ошибка на стороне прокси 99%.

    Попробуй эту же прокси в командной строке запросить curl на сайт без https и посмотри ответ, я думаю, он будет что-то вроде "ой, выходной ноды с такими параметрам нет".

  • Я писал выше, что я тот же proxylist прогнал через тулу https://github.com/greggyNapalm/proxychick несколько раз(я ее для тестов и написал, там стандартная библиотека Golang используется). Она имеет более детализированный вывод ошибок по TLS в том числе. Можно понять где дело в timeout на shandshake, где валидация сертификата не прошла и тд. Так вот, нет ошибок в ней.

    Так же на Python + playwright написал простенький скрипт, который последовательно запрашивает тот же URL через Chrome используя те же proxy - то же нет проблем.

    Сервер один и тот же, proxylist один и тот же. Проблемы только при работе через BAS.

  • @greggyNapalm said in Ошибка ERR_SSL_PROTOCOL_ERROR на определённых прокси:

    Я писал выше

    Я предложил тебе сделать не то, что ты делал.

    Конкретно SOAX, если ему не нравится что-то, то он отвечает plain text с ошибкой, а в браузере ты получаешь ошибку net::ERR_SSL_PROTOCOL_ERROR, как следствие.

    Так как браузер ожидает начало рукопожатия, а получает в ответ plain text.

    Также, конкретно я репортил баг, связанные с SOAX и BAS, дело было в длине логина и пароля. Якобы это было fixed. В браузере это выглядело ровно также, как и у тебя с такой же ошибкой.

    Отдебажить все это можно любым сниффером трафика и увидеть что отвечает SOAX, Wireshark лучше всех в этом плане.

  • Мне удалось собрать cap file с взаимодействием с ifcinfig.co через TLS с успешным исходном и неудачным. В неудачном клиент(BAS) отвечает серверу ошибкой о том что версия протокола не верна, но в ответе сервера валидный ServerHello ответ, plaint text я не вижу. Сейчас буду разбираться в деталях, чем ServerHello от успешного handshake отличается от неуспешного.

  • Экспортнул из Wireshark оба TLS сообщения в виде текста и сделал diff

    Screenshot 2024-04-27 at 12.17.44.png

  • bad-server-hello.txt выглядит вот так

    Transport Layer Security
        TLSv1.3 Record Layer: Handshake Protocol: Server Hello
            Content Type: Handshake (22)
            Version: TLS 1.2 (0x0303)
            Length: 1210
            Handshake Protocol: Server Hello
                Handshake Type: Server Hello (2)
                Length: 1206
                Version: TLS 1.2 (0x0303)
                Random: 1ce1e1e54272fd3e6d5a5634df020b214c83c9d0628b863d96d38b3ebe7f3dbd
                Session ID Length: 32
                Session ID: 35363969c00856f41afd419907488d7895f0aa5b2225ddb9dcced26a6f9774f1
                Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
                Compression Method: null (0)
                Extensions Length: 1134
                Extension: key_share (len=1124) X25519Kyber768Draft00
                    Type: key_share (51)
                    Length: 1124
                    Key Share extension
                        Key Share Entry: Group: X25519Kyber768Draft00, Key Exchange length: 1120
                            Group: X25519Kyber768Draft00 (25497)
                            Key Exchange Length: 1120
                            Key Exchange [truncated]: 0f83d0726ed9b9c02b95e85ac9b9e53d4ac4b69a8538f9c50dc12afbcd03f70d73f466b653b135518f37420b41a643394473d991449c52207e806ff8807417f0a0bde65d21ac8de0a4f3e24d4d490dcf300d81a1561a4a8aac94183b1ae6db04228950fb7756bfa3c697e
                Extension: supported_versions (len=2) TLS 1.3
                    Type: supported_versions (43)
                    Length: 2
                    Supported Version: TLS 1.3 (0x0304)
                [JA3S Fullstring: 771,4865,51-43]
                [JA3S: eb1d94daa7e0344597e756a1fb6e7054]
        TLSv1.3 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
            Content Type: Change Cipher Spec (20)
            Version: TLS 1.2 (0x0303)
            Length: 1
            Change Cipher Spec Message
        TLS segment data (127 bytes)
    
  • good-server-hello.txt

    Transport Layer Security
        TLSv1.3 Record Layer: Handshake Protocol: Server Hello
            Content Type: Handshake (22)
            Version: TLS 1.2 (0x0303)
            Length: 1210
            Handshake Protocol: Server Hello
                Handshake Type: Server Hello (2)
                Length: 1206
                Version: TLS 1.2 (0x0303)
                Random: 08ba98d04d6ac3c61beaf28fcfc19742c11be31d91494a06dd3b0137bbce9a45
                Session ID Length: 32
                Session ID: a056a46f4e60ede233c2801b457c79c984da1db5c7dff03fe77fbe30c4178624
                Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
                Compression Method: null (0)
                Extensions Length: 1134
                Extension: key_share (len=1124) X25519Kyber768Draft00
                    Type: key_share (51)
                    Length: 1124
                    Key Share extension
                        Key Share Entry: Group: X25519Kyber768Draft00, Key Exchange length: 1120
                            Group: X25519Kyber768Draft00 (25497)
                            Key Exchange Length: 1120
                            Key Exchange [truncated]: b3f55383f6351feb68dd7b29a8226be0b35be3aa045a72ad666e4ceb967a0f31d182fad0452698086e181270fb20312b4d7ab4341d4346328e6e974e8747c37c9e69cd36a5a3b18473ec7ed53cdc8a395c94332aa7d1ba36352e9cc1fa1b07cf4a317a7e70987e984dd8b
                Extension: supported_versions (len=2) TLS 1.3
                    Type: supported_versions (43)
                    Length: 2
                    Supported Version: TLS 1.3 (0x0304)
                [JA3S Fullstring: 771,4865,51-43]
                [JA3S: eb1d94daa7e0344597e756a1fb6e7054]
        TLSv1.3 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
            Content Type: Change Cipher Spec (20)
            Version: TLS 1.2 (0x0303)
            Length: 1
            Change Cipher Spec Message
        TLS segment data (219 bytes)
    
  • Вот такое сообщение шлет TLS client

    Screenshot 2024-04-29 at 18.14.45.png

  • i have the same issue, did you find a solution for this?

  • @markyjennings
    Write the proxies with which the problem occurs to me in private messages so that I can check it please.

  • на белурке так, если релоаднуть страницу то пустит, но при первой загрузке домена практически всегда выдает ошибку сертификата. IYBsBVy5aF:o3lAbN7Xsk:109.120.128.60:62521