gpt4 book ai didi

wcf - 将自签名 SSL 证书与 WCF ws2007FederationBinding 结合使用

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:47 25 4
gpt4 key购买 nike

我已经无计可施了,希望你能帮助我。我正在尝试使用自签名证书通过 WIF 从 Web 应用程序到 Web 服务获取事件的 WS-Trust 身份验证。

我已经尝试过以下方法:

1) 在受信任的根证书颁发机构、个人和受信任的人下的机器证书存储中安装证书

2) 确保“每个人”都可以完全访问 Crypto/RSA/MachineKeys 文件夹

3) 将使用 ServicePointManager.ServerCertificateValidationCallback 的证书验证覆盖为仅返回 true 的方法。我可以调试此方法并观察它返回 true。

而且我仍然在 System.ServiceModel 跟踪中看到了这一点:

[0832] SecureChannel#66940002 - 证书名称不匹配。

[0832] SecureChannel#66940002 - 远程证书被用户验证为无效。

应用程序崩溃了:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。

最佳答案

那是因为 ServerCertificateValidationCallback 只执行证书验证的 SSL 相关部分。

因此,如果它仍然存在问题,则意味着不仅 SSL 在这里发挥作用。

事实上,WS-Trust 构建在 WS-Security 之上,而 WS-Security 对您的消息 header 进行签名。并且该签名的验证不受 ServerCertificateValidationCallback 的影响。

您肯定有第二个证书来签署消息的 WS 安全 header 。

有一段不同的代码用于验证证书的名称是否与端点设置的身份节点中的值匹配,如下所示:

<endpoint address="..." 
<identity>
<dns value="PUT CN OF THE MESSAGE SIGNATURE CERTIFICATE HERE" />
</identity>
</endpoint>

如果另外消息签名证书未验证,您可以通过修改“behaviors/endpointBehaviors/behavior/clientCredentials/serviceCertificate/authentication”来禁用它的验证。您将那里的 certificateValidationMode 属性设置为“无”。

或者您将其设置为自定义,然后必须实现您自己的验证器,该验证器派生自 System.IdentityModel.Selectors.X509CertificateValidator 并覆盖验证回调。

关于wcf - 将自签名 SSL 证书与 WCF ws2007FederationBinding 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com