2016-06-16 7 views
12

Мое приложение подключается к серверу Experian, и Experian скоро остановит поддержку TLS 1.0 и TLS 1.1. Все подключения с использованием HTTPS должны использовать TLS Version 1.2.Возможно ли отправить HttpWebRequest с использованием TLS1.2 на платформе .NET 4.0

Я хочу сделать некоторые исследования по этому вопросу и увидеть отправки HttpWebRequest с использованием TLS 1.2 на .NET 4.0 framework работает

Если нет, то я, возможно, потребуется создать webservice на .NET 4.5 и вызывать его методы, если это произойдет, Мне ничего не нужно.

Неужели кто-нибудь уже сталкивался с этой проблемой?

ответ

25

Да, он поддерживает его, но вы должны явно указать версию TLS на ServicePointManager. Просто выполните этот код в любое время (в том же домене приложения), прежде чем звонить в Experian:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 
+0

Я пытаюсь реализовать это изменение, которое вы предложили, и единственные опции 'SecurityProtocolType', которые у меня есть' Ssl3' и 'Tls'. У него нет 'Tls12' – gene

+0

Я сам использую это, чтобы вызвать экспериментатора, поэтому Тим должен быть прав. Проблема не в HttpRequest, это рамочная версия. – Crowcoder

+0

Пока у вас ничего нет на нижнем уровне рамки, зависящей от этого кода, вы можете просто поднять версию фреймворка и добавить одну строку кода. – Crowcoder

3

К сожалению, вы не можете этого сделать. Tls12 не добавлялся до .netfx 4.5 (см. the documentation). Обратите внимание, что это также требует корректной работы Windows Server 2008 R2 + или Windows 7+ (обратите внимание на раздел «Применяется к» на странице Introducing TLS).

14

мне пришлось иметь дело с той же проблемой, в то время как интегрировать PayPal в унаследованных приложений, и нашел следующий обходной путь для .NET 4.0, который, кажется, сделать трюк:

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 
ServicePointManager.DefaultConnectionLimit = 9999; 

В основном это обходной путь напрямую назначьте порт для TLS 1.2.

Все данные относятся к автору комментариев: CodeProject.

+0

Эта волшебная линия сделала трюк 'ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072' Большое спасибо! –