Для поддержки TLS 1.2 для BizTalk 2016 мы обновили до BizTalk 2016 Feature Pack 3. Обновление прошло успешно, и наш рабочий процесс работал без проблем, пока наша сеть не отключила поддержку TLS 1.0 и TLS 1.1. После этого мы начали получать приведенную ниже ошибку при вызове API из BizTalk: мы знаем, что API поддерживает TLS 1.2.
трассировка стека внутренних исключений:
Адаптер не смог передать сообщение, идущее на порт отправки
«SndPort_PostMsgfile» с URL
"https://demo -xxxxxx-api.abc.com / апи / Сообщение / MessageFile ". Это будет
ретранслируется после интервала повторов, указанного для этого порта отправки.
Подробности: "System.ServiceModel.Security.SecurityNegotiationException:
Не удалось установить безопасный канал для SSL / TLS с полномочиями
'Demo-common-api.medimpactdirect.com. ---> System.Net.WebException:
Запрос был прерван: не удалось создать безопасный канал SSL / TLS.
в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
в
System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (IAsyncResult
результат)
Трассировка стека серверов:
в System.Runtime.AsyncResult.End [TAsyncResult] (результат IAsyncResult)
в
System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End (SendAsyncResult
результат) в
System.ServiceModel.Channels.ServiceChannel.EndCall (действие String,
Object [] ауты, результат IAsyncResult) в
System.ServiceModel.Channels.ServiceChannel.EndRequest (IAsyncResult
результат)
Исключение переброшено в [0]: в
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде
reqMsg, IMessage retMsg) в
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData &
msgData, тип Int32) в
System.ServiceModel.Channels.IRequestChannel.EndRequest (IAsyncResult
результат) в
Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback (IAsyncResult
результат)».
Мы хотим убедиться, что запрос, исходящий из BizTalk, всегда находится на TLS 1.2. Нужно ли обновлять порт отправки WebHTTP, создавая расширение поведения со следующим фрагментом кода (как это сделано в API) -
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Требуются ли изменения в реестре? Я попытался обновить реестр на основе предложений от:
https://support.microsoft.com/en-us/help/3155464/ms16-065-description-of-the-tls-ssl-protocol-information-disclosure-vu