Closed Vanish-q closed 5 months ago
Отмечу, что ошибка полностью воспроизводится на ОС Ubuntu 22.04.4 LTS в WSL
Предположу, что прокси как минимум должен поддерживать ГОСТ-TLS.
Предположу, что прокси как минимум должен поддерживать ГОСТ-TLS.
Ранее при размещении приложения на windows сервере и использовании этого proxy все было в порядке. Так же с более ранними версиями либкоры, которые встраивались в стандартные библиотеки .net в рантайме все работало. Но уже сам сервер Astra Linux блокирует приложение из-за этого встраивания. Поэтому пришлось перейти на CpHttpClient.
Добрый день!
Давайте начнём с tcpdump'a.
Добрый день!
Давайте начнём с tcpdump'a.
tcpdump запускал следующей командой:
sudo tcpdump -i any -vv host 172.19.196.113 or lk.egrz.ru and port 3128 or 443
Вывод такой:
tcpdump: data link type LINUX_SLL2
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
13:08:19.753952 lo In IP (tos 0x0, ttl 64, id 44221, offset 0, flags [DF], proto TCP (6), length 60)
172.19.196.113.53172 > 172.19.196.113.3128: Flags [S], cksum 0xe138 (incorrect -> 0x9796), seq 1855519323, win 65495, options [mss 65495,sackOK,TS val 1984830004 ecr 0,nop,wscale 7], length 0
13:08:19.753969 lo In IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
172.19.196.113.3128 > 172.19.196.113.53172: Flags [S.], cksum 0xe138 (incorrect -> 0x498f), seq 1001161171, ack 1855519324, win 65483, options [mss 65495,sackOK,TS val 1984830004 ecr 1984830004,nop,wscale 7], length 0
13:08:19.753975 lo In IP (tos 0x0, ttl 64, id 44222, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.53172 > 172.19.196.113.3128: Flags [.], cksum 0xe130 (incorrect -> 0x704b), seq 1, ack 1, win 512, options [nop,nop,TS val 1984830004 ecr 1984830004], length 0
13:08:19.795491 lo In IP (tos 0x0, ttl 64, id 44223, offset 0, flags [DF], proto TCP (6), length 212)
172.19.196.113.53172 > 172.19.196.113.3128: Flags [P.], cksum 0xe1d0 (incorrect -> 0xbf0b), seq 1:161, ack 1, win 512, options [nop,nop,TS val 1984830045 ecr 1984830004], length 160
13:08:19.795514 lo In IP (tos 0x0, ttl 64, id 13350, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.3128 > 172.19.196.113.53172: Flags [.], cksum 0xe130 (incorrect -> 0x6f5a), seq 1, ack 161, win 511, options [nop,nop,TS val 1984830045 ecr 1984830045], length 0
13:08:19.797283 lo In IP (tos 0x0, ttl 64, id 13351, offset 0, flags [DF], proto TCP (6), length 3744)
172.19.196.113.3128 > 172.19.196.113.53172: Flags [P.], cksum 0xef9c (incorrect -> 0x03a1), seq 1:3693, ack 161, win 512, options [nop,nop,TS val 1984830047 ecr 1984830045], length 3692
13:08:19.797298 lo In IP (tos 0x0, ttl 64, id 44224, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.53172 > 172.19.196.113.3128: Flags [.], cksum 0xe130 (incorrect -> 0x60fc), seq 161, ack 3693, win 493, options [nop,nop,TS val 1984830047 ecr 1984830047], length 0
13:08:19.797694 lo In IP (tos 0x0, ttl 64, id 13352, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.3128 > 172.19.196.113.53172: Flags [F.], cksum 0xe130 (incorrect -> 0x60e7), seq 3693, ack 161, win 512, options [nop,nop,TS val 1984830048 ecr 1984830047], length 0
13:08:19.799196 lo In IP (tos 0x0, ttl 64, id 44225, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.53172 > 172.19.196.113.3128: Flags [F.], cksum 0xe130 (incorrect -> 0x60e4), seq 161, ack 3694, win 512, options [nop,nop,TS val 1984830049 ecr 1984830048], length 0
13:08:19.799262 lo In IP (tos 0x0, ttl 64, id 13353, offset 0, flags [DF], proto TCP (6), length 52)
172.19.196.113.3128 > 172.19.196.113.53172: Flags [.], cksum 0xe130 (incorrect -> 0x60e3), seq 3694, ack 162, win 512, options [nop,nop,TS val 1984830049 ecr 1984830049], length 0
172.19.196.113
- ip WSL
3128
- порт на котором находится proxy
lk.egrz.ru
доменное имя сервиса, который используется ГОСТ TLS
В файл сдампите всё
tcpdump -i <interface> -w <file>
и приложите файл к запросу, пожалуйста.
Залил файл в облако, сюда приложить не давал https://disk.yandex.ru/d/WEUa2OfM1SuT1Q
Весьма странный лог, TLS в нём нет. В лог попал вот такой ответ, видимо, от самого Squid:
<p><b>Unsupported Protocol</b></p>\n
<p>Squid does not support some access protocols. For example, the SSH protocol is currently not supported.</p>\n
Посмотрите лог самого прокси, возможно, это поможет решить проблему.
Поэкспериментируйте с различными конфигурациями:
При использовании CpHttpHandler
доступ к http://ya.ru
через прокси устанавливается корректно, в логе самого прокси появляется следующие записи:
1718018577.004 25 172.19.196.113 TCP_MISS/301 1567 GET http://ya.ru/ - HIER_DIRECT/77.88.44.242 -
1718018577.215 177 172.19.196.113 TCP_TUNNEL/200 330918 CONNECT ya.ru:443 - HIER_DIRECT/77.88.44.242 -
Прокси судя по всему автоматом перекидывает на https
При попытке получить доступ к https://ya.ru
на прокси ошибка 1718018094.882 1 172.19.196.113 NONE_NONE/400 3692 - error:invalid-request - HIER_NONE/- text/html
такая же как и ранее возникала при подключении к lk.egrz.ru
, а в коде абсолютно такая же ошибка как та что я указывал в самом начале обращения
Если же использовать HttpClientHandler
то к ya.ru
доступ дает как по http, так и по https.
Так же ранее пытался экспериментировать с настройками прокси, но пришел к выводу, что с ним ничего не сделать. Из-за того, что:
HttpClientHandler
позволяет устанавливать соединениеДополнительно сделал отдельные файлы с логами tcpdump:
CpHttpHandler
доступ к http://ya.ru
https://disk.yandex.ru/d/QOrIJ731cSaGZgCpHttpHandler
доступ к httpS://ya.ru
https://disk.yandex.ru/d/3tWbFe6kRSfCSgHttpClientHandler
доступ к http://ya.ru
https://disk.yandex.ru/d/dSdV61P2nfglCQHttpClientHandler
доступ к httpS://ya.ru
https://disk.yandex.ru/d/-xMVDLZzUluj-QСпасибо, посмотрим.
Добрый день!
Попробуйте с этой предварительной версией.
ВАЖНО! Исправление сделано только для .NET 8 (в .NET 6 данный сценарий поддерживаться не будет), соответственно, перед сборкой убедитесь, что ссылаетесь в проекте на версию фреймворка net8.0
.
Добрый день, проверил, заработало. Можете несколько сориентировать когда данные изменения появятся в релизной версии?
Выпустили релиз под правку
https://github.com/CryptoPro/libcore/releases/tag/v2024.6.27
Добрый день, у нас имеется сервер AstraLinux и приложение на C#. Приложению нужно установить соединение с сервером использующим TLS шифрование с ГОСТ сертификатами. Для установки соединения используется
CpHttpHandler
. При попытке установить соединение напрямую все работает корректно, но как только между нами и веб сервисом появляется прокси все перестает работать. Прокси пишет, что не понимает наш запрос, а мы в коде ловим ошибку в которой написано, что кадр поврежденНиже полная ошибка
Версия ОС сервера - Astra Linux 1.7 c# Приложение использует .net8.0 В качестве прокси используется Squid
Запрос отправляется следующим образом
Функция CheckEGRZCertificate1 всегда возвращает true, но до ее вызова дело не доходит