1

我有一个 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 将重试并且消息将通过。我不确定是什么原因导致此时出现错误 - 高吞吐量、高内存消耗或其他。

4

1 回答 1

2

不,你不能禁用它。您需要将自签名证书添加到 BizTalk 主机用户的受信任根证书存储中,这样它将信任该证书。

于 2013-10-23T20:19:53.013 回答