Загрузка данных


Да. Раз SFC/DISM уже отработали, а картина стабильная — DNS работает, TCP:443 работает, но TLS handshake обрывается, — я бы уже перестал делать обычные netsh reset.

Причём код 0x80090302, который ты видел раньше, в документации Microsoft соответствует SEC_E_UNSUPPORTED_FUNCTION и может появляться при TLS alert protocol_version. 

Давай сделаем нормальную глубокую диагностику, практически как сетевой инженер. Ничего пока не будем менять.

1. Сначала посмотрим, какие TLS-протоколы реально включены

PowerShell от имени администратора:

Get-TlsCipherSuite | Select-Object Name

И:

Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\*" -ErrorAction SilentlyContinue

И:

Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Recurse -ErrorAction SilentlyContinue |
Get-ItemProperty -ErrorAction SilentlyContinue |
Select-Object PSPath,Enabled,DisabledByDefault

Скинь мне результат.


---

2. Посмотрим, что именно говорит Windows о TLS

Выполни:

Get-WinEvent -FilterHashtable @{
    LogName='System'
    ProviderName='Schannel'
    StartTime=(Get-Date).AddHours(-2)
} -ErrorAction SilentlyContinue |
Select-Object TimeCreated,Id,LevelDisplayName,Message |
Format-List

Вот это очень важно.

Если Windows сама пишет что-нибудь вроде:

TLS handshake failed

protocol version

fatal alert

cipher

certificate

Schannel


— мы практически получим диагноз.


---

3. Проверим TLS разных версий

Выполни по очереди:

curl.exe -vk --tlsv1.2 --tls-max 1.2 https://google.com

затем:

curl.exe -vk --tlsv1.3 https://google.com

и:

curl.exe -vk --tlsv1.2 --tls-max 1.2 https://example.com

Мне нужен результат всех трёх.


---

4. А вот это уже будет совсем серьёзная диагностика

Windows умеет сама записывать полный сетевой trace с пакетами, без установки каких-либо программ. Microsoft специально предоставляет netsh trace для таких случаев. 

Создай папку:

mkdir C:\NetTrace

Запусти запись:

netsh trace start scenario=InternetClient capture=yes report=yes tracefile=C:\NetTrace\internet.etl

После сообщения, что трассировка запущена, ничего больше не делай и выполни:

curl.exe -vk https://google.com

Дождись ошибки.

После этого:

netsh trace stop

Windows создаст .etl и диагностический .cab; Microsoft описывает именно такой способ сбора сетевого trace. 

Вот этот trace уже позволит понять, что происходит с TLS ClientHello/ServerHello/Alert, то есть можно будет увидеть, кто именно рвёт соединение. Анализ TLS handshake по сетевой трассировке — стандартный способ диагностики такой проблемы. 


---

Но я бы пока сделал ещё одну вещь

Выполни:

curl.exe -V

и:

Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsBuildNumber

Пришли мне одним сообщением скрины пунктов 1–3 + curl -V.

А если хочешь пойти совсем до конца, после этого сделаем netsh trace, и ты сможешь прикрепить сюда получившийся .etl/.cab. Тогда мы будем искать проблему уже не методом тыка, а по реальному сетевому обмену.

Пока ничего вроде Hyper-V, BIOS, реестра Schannel или брандмауэра не отключай. Сейчас у нас достаточно данных, чтобы сначала точно определить, какой именно этап TLS ломается.