Можно ли использовать .NET Remoting + TLS 1.2 (или 1.1)?

Недавно наше сканирование PCI DSS завершилось неудачно и требует, чтобы мы отключили TLS 1.0 (и включили TLS 1.1 или 1.2). Я нашел инструкции о том, как это сделать, в нашем окне Windows Server 2008 R2, но у нас есть устаревшее приложение, использующее .NET Remoting (это приложение Windows Forms .NET 2.0 / портал данных CSLA 1.5, размещенный на сервере IIS), который не работает. t общаться с новыми настройками.

У меня следующее исключение:

введите описание изображения здесь

Я пробовал различные конфигурации комбинаций настроек TLS как на клиенте, так и на сервере, но безрезультатно. Такие как:

  1. Отключение TLS 1.0 как на клиенте, так и на сервере (в реестре) и включение TLS 1.2.
  2. Включение TLS 1.1 как на клиенте, так и на сервере (в реестре).

Я провел небольшое исследование и обнаружил, что платформа .NET 4.5 поддерживает TLS 1.1 и 1.2, но неясно, распространяется ли это на удаленное взаимодействие .NET. Имеет ли это?

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

Тем не менее, это приложение имеет много зависимостей и несовместимостей с .NET 4.5.2, поэтому было бы полезно знать, действительно ли я иду в правильном направлении, обновляясь, или я должен быть в безумной спешке, чтобы полностью переписать это приложение ( все варианты, которые я изучил, требуют серьезных изменений в приложении). Даже создание тестового приложения для его опробования может оказаться сложной задачей, поскольку я не имел непосредственного отношения к удаленному взаимодействию .NET около 10 лет.

Итак, снова у меня вопрос: поддерживает ли удаленное взаимодействие .NET TLS 1.1 или 1.2?

Также:

  1. Достаточно ли для этого обновления до .NET framework 4.5.2?
  2. Есть ли дополнительные параметры конфигурации, которые необходимо ввести, чтобы обеспечить взаимодействие, и если да, то какие?
  3. Если требуется обновление до .NET framework 4.5.2, нужно ли обновлять все приложение, только те части, которые используют удаленное взаимодействие .NET, только клиент, который ссылается на библиотеки, использующие удаленное взаимодействие .NET, или какую-либо другую комбинацию ?

Я использую:

  1. Windows Server 2008 R2 как сервер.
  2. IIS 7.5 для удаленного взаимодействия с включенным SSL (портал данных CSLA).
  3. Windows 7 Professional для клиента.

person NightOwl888    schedule 29.10.2015    source источник
comment
Я пробовал обновиться до .NET Framework 4.5.2, но это не помогло.   -  person Doug Domeny    schedule 19.04.2016


Ответы (3)


Я нашел решение в это неясное сообщение в блоге MSDN. Чтобы использовать TLS 1.2, необходимо включить параметр групповой политики для использования алгоритмов шифрования жалоб FIPS.

Это устраняет проблему с удаленным взаимодействием .NET, щелчком после развертывания и MS Web Deploy. К сожалению, это сломало мои веб-приложения ASP.NET, и я все еще ищу решение этой проблемы.

person NightOwl888    schedule 13.11.2015
comment
Эта статья - 7.5: Как включить TLS 1.1 и TLS 1.2 (basics.net/2015/10/06/iis-7-5-how-to-enable-tls-1-1-and-tls -1-2) может помочь. Возможно, потребуется включить TLS, изменив реестр. В моей системе Windows 7 она была отключена. - person Doug Domeny; 15.04.2016

Это ошибка The underlying connection was closed: An unexpected error occurred on a send., которую я получаю в своем коде .Net 2.0 / .Net 3.5 при выполнении http-вызова базы кода, размещенной в IIS Windows 2012 R2.

У меня есть обновленный ответ на этот вопрос. Я также использую CSLA (и другие HTTP-вызовы к веб-серверу), размещенный в Windows 2012 R2 (IIS), и недавно отключил SSL 3.0 и TLS 1.0. Существует удобный инструмент под названием IISCrypto, который поможет установить ваши предпочтения TLS. Я выбрал «Best Practice», а также отключил TLS 1.0.

Теперь, чтобы исправить код .NET 2.0 / 3.5, есть инструкции здесь. Для этого требуется добавить SecurityProtocolTypeExtensions.cs и SslProtocolsExtensions.cs в ваш проект и добавить приведенный ниже код перед вызовом кода на стороне сервера.

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolTypeExtensions.Tls11 | SecurityProtocolTypeExtensions.Tls12;

Я надеюсь, что это поможет кому-то справиться с ошибкой / проблемами.

person spinner_den_g    schedule 28.04.2017

Следующая ссылка предоставила мне правильное решение. Я использую удаленное взаимодействие .NET для своего портала. Мой ИТ-отдел отключил TLS 1.0 на моих серверах CSLA, а мои библиотеки CSLA были написаны на .NET 4.0. Исправление предполагает редактирование реестра на клиентских машинах.

person DEV_KD    schedule 09.07.2018