为支持BizTalk 2016的TLS 1.2,我们已升级到BizTalk 2016 Feature Pack3。升级成功,我们的工作流没有问题,直到我们的网络关闭了对TLS 1.0和TLS 1.1的支持。之后,我们从BizTalk调用API时开始出现以下错误:我们知道该API支持TLS 1.2。
内部异常堆栈跟踪:
适配器无法发送要发送端口的消息 带有网址的“ SndPort_PostMsgfile” “ https://demo-xxxxxx-api.abc.com/api/Message/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 结果)
服务器堆栈跟踪:
at System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果) 在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果) System.ServiceModel.Channels.ServiceChannel.EndCall(字符串操作, Object []输出,IAsyncResult结果)位于 System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult 结果)
在[0]处抛出异常: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage 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