Мне нужно использовать TLS 1.2 для подключения моего веб-сервиса .NET к другому, который будет принудительно использовать TLS 1.2. Я нашел ресурс, в котором говорится, что .NET 4.6 по умолчанию использует TLS 1.2, так что это звучит как самое простое решение. Я обновил платформу .NET на сервере и перезапустил. В IIS я пытался создать пул приложений с использованием .NET 4.6, но 4.0 была единственным вариантом. Затем я нашел кое-что, в котором говорилось, что он все еще будет означать 4.0, потому что 4.6 - это обновление «на месте» для .NET 4.0. Поэтому я подумал, что, может быть, я закончил Однако на странице ошибки, которую я получил по несвязанным причинам, было сказано, Microsoft .NET Framework Version:4.0.30319
что, похоже, я не обновился успешно. Любые указатели на то, как убедиться, что мой пул приложений использует .NET 4.6 или, в более общем плане, как включить TLS 1.2?
99
Ответы:
На самом деле мы только что обновили веб-службу .NET до версии 4.6, чтобы разрешить использование TLS 1.2.
То, что говорит Артем, - это первые шаги, которые мы сделали. Мы перекомпилировали структуру веб-службы до версии 4.6 и попытались изменить ключ реестра, чтобы включить TLS 1.2, но это не сработало: соединение все еще оставалось в TLS 1.0. Кроме того, мы не хотели запрещать SLL 3.0, TLS 1.0 или TLS 1.1 на машине: это могли использовать другие веб-службы; мы откатили наши изменения в реестре.
Мы фактически изменили файлы Web.Config, чтобы сообщить IIS: «Эй, запустите меня в 4.6, пожалуйста».
Вот изменения, которые мы добавили в перекомпиляцию web.config + в .NET 4.6:
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> <authentication mode="Windows"/> <pages controlRenderingCompatibilityVersion="4.0"/> </system.web>
И соединение изменилось на TLS 1.2, потому что IIS теперь запускает веб-службу в 4.6 (указано явно), а 4.6 по умолчанию использует TLS 1.2.
источник
Добавьте следующий код, прежде чем создавать экземпляр клиента веб-службы:
Или для обратной совместимости с TLS 1.1 и ранее:
источник
если вы используете .Net раньше , чем 4.5 вы не будете иметь Tls12 в перечислении так государство явно упоминается здесь
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
источник
Требуется три шага:
Явно отметьте SSL2.0, TLS1.0, TLS1.1 как запрещенные на вашем сервере, добавив
Enabled=0
иDisabledByDefault=1
в свой реестр (полный путьHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
). См. Подробности на экранеЯвно включите
TLS1.2
, выполнив шаги из 1. Просто используйтеEnabled=1
иDisabledByDefault=0
соответственно.ПРИМЕЧАНИЕ: проверьте версию сервера:
Windows Server 2003
не поддерживаетTLS 1.2
протоколВключите
TLS1.2
только на уровне приложения, как @John Wu предложил выше.System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Надеюсь, это руководство поможет.
ОБНОВЛЕНИЕ Как упоминалось в @Subbu: Официальное руководство
источник
Для меня ниже работали:
Шаг 1. Загрузите и установите исполняемый файл веб-установщика с https://www.microsoft.com/en-us/download/details.aspx?id=48137 на сервере приложений. После завершения установки перезагрузил сервер приложений.
Шаг 2: Добавлены ниже изменения в web.config
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> </system.web>
Шаг 3. После выполнения шагов 1 и 2 возникла ошибка: « WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для 'jquery'. Добавьте ScriptResourceMapping с именем jquery (с учетом регистра) », и для устранения этой ошибки я добавил ниже ключ в настройках приложений в моем файле web.config
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
источник
PowerBI Embedded требует TLS 1.2.
Ответ Этьена Фошера выше - ваше решение. быстрая ссылка на ответ выше ... быстрая ссылка на ответ выше ... ( https://stackoverflow.com/a/45442874 )
PowerBI требует TLS 1.2. Июнь 2020 г. - Это ваш ответ - рассмотрите возможность увеличения среды выполнения IIS до версии 4.6, чтобы принудительно использовать стандартное поведение TLS 1.2, которое вы ищете от платформы. Приведенный выше ответ дает вам решение только для изменения конфигурации.
Симптомы : принудительное закрытое отклоненное соединение TCP / IP с Microsoft PowerBI Embedded, которое внезапно появляется в ваших системах.
Эти вызовы PowerBI просто перестают работать из-за ошибки жесткого закрытия TCP / IP, как будто брандмауэр блокирует соединение. Обычно шаги аутентификации работают - это когда вы нажимаете службу для определенной рабочей области и сообщаете идентификаторы, что она не работает.
Это примечание 2020 от Microsoft PowerBI о необходимости TLS 1.2.
PowerBIClient
методы, которые показывают эту проблему
GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler Force TLS 1.1 TLS 1.2
Условия ошибки поиска, чтобы помочь людям найти это: System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка. System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
источник