Visual Studio Nuget.org SSL/TLS error

Некоторое время Visual Studio стояла у меня без дела, но когда она мне понадобилась, выяснилось, что доступ к репозиторию пакетов недоступен с ошибкой SSL/TLS error приблизительно следующего содержания:

Unable to load the service index for source https://api.nuget.org/v3/index.json.
An error occurred while sending the request.
The request was aborted: Could not create SSL/TLS secure channel.

Доступ к указанному URL в Firefox работает.

Эта проблема возникла не в 2020 году: об этом написано в developercommunity.visualstudio.com, на SO и на GitHub. Как это часто бывает, всё обсуждавшееся тогда не имеет отношения к сегодняшней проблеме.

Основное решение:

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -name 'Enabled' -value 0 -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -name 'Enabled' -value 0 -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.3 has been disabled.'

New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.2 has been enabled.'

Это тоже не помогло.

После того как я исполнил все ритуальные пляски (прописав в реестре отключение TLS 1.3 и включение 1.2, отключив TLS 1.1 в настройках IE) и оставшись на том же месте, я начал искать другое. Проверка (переход по ссылке https://www.ssllabs.com/ssltest/viewMyClient.html во внутреннем браузере VS) показала, что TLS 1.2 работает, а всё ненужное — не работает, так что проблема не в этом.

Проблема — в сертификате nuget.org. Поводом к такой мысли стала статья, где сообщалось об издыхании сертификата Microsoft и обещалось вскоре сообщить о новом сертификате для сайта nuget.org. На сайте nuget.org я такого сообщения не нашёл, но всё равно заподозрил, что сертификат более невалидный. Значит, необходимо просто взять актуальный, и загрузить его в системный реестр сертификатов.

В FF это просто: переходим на сайт, открываем свойства, выгружаем сертификат, загружаем его в реестр. В картинках это выглядит так:

/images/2020-12-19_174256.png

Нажать кнопку >.

/images/2020-12-19_174338.png

Нажать кнопку Подробнее. Откроется окно Информация о странице.

/images/2020-12-19_174401.png

Нажать на кнопку Просмотреть сертификат. В FF откроется окно просмотра сертификата.

/images/2020-12-19_174426.png

Прокрутить окно вниз до раздела Разное.

/images/2020-12-19_174444.png

Нажать на ссылку PEM (сертификат) и сохранить его.

/images/2020-12-19_174542.png

Открыть консоль сертификатов, и импортировать сохраненный сертификат в Сертификаты (локальный компьютер) > Доверенные лица > Реестр > Сертификаты.

Одно не ясно мне — почему новая установка Visual Studio в виртуальной машине не имела таких проблем и работала нормально?