我有一个 WCF-BasicHttp 发送端口调用一个使用自签名 SSL 证书保护的 Web 服务。这一切都部署在测试环境中,我们无法访问适当的证书。
BizTalk 返回错误“无法为 SSL/TLS 安全通道建立信任关系”,因为它无法正确信任未签名的证书。有没有办法配置 BizTalk 或发送端口来禁用证书验证?
我看过代码示例,但这不起作用,因为没有什么可编码的:BizTalk 发送端口纯粹是配置:
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
...
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(OnValidationCallback);
...
public static bool OnValidationCallback(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
我还查看了更新 BtsNtSvc.exe.config 配置文件,指定 checkCertificateName="false" 但这不起作用,因为该设置只影响消息级别的证书验证,而不影响传输。
<system.net>
<settings>
<servicePointManager checkCertificateName="false" checkCertificateRevocationList="false"/>
</settings>
</system.net>
在 Dijkgraaf 的回复下,我已将证书导入到我的 biztalk 发送服务的相应商店,它部分解决了问题。我们暂停了大约 65000 条消息。如果我批量恢复其中的 200 个,则 50% 或更多将被发送到 Https Web 服务,但其余的将出现相同的错误。最终 BizTalk 将重试并且消息将通过。我不确定是什么原因导致此时出现错误 - 高吞吐量、高内存消耗或其他。