我有一个 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 将重试并且消息将通过。我不确定此时出现错误的原因 - 高吞吐量、高内存消耗或其他。
最佳答案
不,你不能禁用它。您需要将自签名证书添加到 BizTalk 主机用户的受信任根证书存储中,这样它将信任该证书。
关于wcf - 在 BizTalk 中禁用 WCF 自签名证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550211/