2

У меня отключен TLS 1.0. Поэтому мы пытаемся использовать TLS 1.2 в нашем приложении .Net, использующем .NET Framework 4.0.Проблема использования TLS 1.2 в .NET Framework 4.0

Я добавил код для этого в начале

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 

Он отлично работает на моей локальной системе.

Но я не уверен, почему он не работает при развертывании кода на сервере (Windows Server 2008 R2). Я все проверил. .Net присутствует на сервере. Но тем не менее он дает такую ​​же проблему только на сервере.

Есть ли что-нибудь, что мне не хватает здесь?

+0

Возможный дубликат [По умолчанию SecurityProtocol в .NET 4.5] (http://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5) – VMAtm

ответ

3

В соответствии с this post:

.NET 4.0 поддерживает до TLS 1.0 в то время как .NET 4.5 поддерживает до TLS 1.2

Тем не менее, приложение ориентации .NET 4.0 все еще может поддерживать до TLS 1.2 , если .NET 4.5 установлен в в той же среде. .NET 4.5 устанавливается поверх .NET 4.0, заменяя System.dll.

Для этого необходимо обновить сервер до .Net 4.5, чтобы включить TLS 1.2.

Кроме того, вы можете упростить код и сделать его более удобным для чтения:

using System.Net; 

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

Связанные MSDN статьи:

+0

Означает ли это, что если у меня есть приложение WinForms и вам нужна поддержка TLS 1.2 для SOAP-запросов, мне придется изменить его на .NET 4.5 и обеспечить, чтобы все пользователи установили эту инфраструктуру? – NickG

+0

Да, иначе это не сработает. Если вы можете это сделать: 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls', это может сделать трюк, но все равно, вероятно, произойдет сбой, поскольку вы говорите, что у вас отключен «TLS 1.0». – VMAtm

+0

SecurityProtocolType.Tls12 даже не существует в .NET 4.0, но я могу использовать int. Однако, похоже, нет никакого способа обойти тот факт, что пользователям потребуется .NET 4.5. – NickG

0

Если вы хотите использовать T LS 1.2 в существующем коде .NET 4.x без изменений кода приложения, вам понадобятся следующие данные:

  1. Установите .NET framework 4.6 или новее. Это необходимо для использования TLS 1.2 в качестве протокола по умолчанию в сочетании с соответствующими разделами реестра Windows.

  2. Установите следующие .NET Framework strong cryptography registry keys:

На 32-битных и 64-битных версий Windows: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

На 64-битных версиях Windows: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

Значение WOW6432Node используется 32-разрядными приложениями при работе в 64-разрядной системе.

Для получения дополнительной информации см: https://github.com/TheLevelUp/pos-tls-patcher