gpt4 book ai didi

c# - 如何通过 WCF 设置 SSL?

转载 作者:行者123 更新时间:2023-11-30 12:44:26 25 4
gpt4 key购买 nike

我在生产环境中收到的错误:

The remote certificate is invalid according to the validation procedure.
[AuthenticationException: The remote certificate is invalid according to the validation procedure.] System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) +2755308
System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +470

生产环境使用三层架构,Web 与应用程序对话,应用程序与数据库对话。 Web 和 App 使用 WCF 服务层通过 SSL (443) 进行通信。我们认为这可能是 IIS7 中的 SSL 证书配置或 WCF 配置问题。

我们尝试了什么:我将 App 和 Web 中的证书添加到“本地计算机”和“当前用户”的受信任机构。

如果需要,我可以添加我的 WCF Web 配置。

我尝试了以下建议:

https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/ms734695.aspx

"The remote certificate is invalid according to the validation procedure." using Gmail SMTP server

How do I know what the storeName of a certificate?

https://msdn.microsoft.com/en-us/library/ms733813(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/hh556232%28v=vs.110%29.aspx

Self-Hosted WCF Service with Mutual SSL (between Service and Client) fails with 403 Forbidden

最佳答案

此答案适用于客户端证书,您将带有有效负载的证书发送到 HTTPS 端点。

您需要确保您信任该证书,您信任创建它的证书颁发机构,并且您在受信任的存储区中拥有该 CA 的证书。

您是否可以转到您的系统(不是 WCF 服务)上需要提供证书的简单网页?即:https://mysite/test.aspx这将允许您在 WCF 之外测试证书,并将 WCF 问题与 IIS 问题分开。

1) 确保您已在 IIS 中设置证书映射。 http://www.iis.net/configreference/system.webserver/security/authentication/clientcertificatemappingauthentication http://blogs.msdn.com/b/asiatech/archive/2014/02/13/how-to-configure-iis-client-certificate-mapping-authentication-for-iis7.aspx

短 tl;博士;对于我们所做的:

  • 将您的客户端证书添加到您的证书库(私钥)
  • 在本地用户中添加一个用户
  • 转到 IIS 并将证书映射到您创建的用户
  • 运行 winhttpcfg.exe 给你的应用程序池的用户访问该证书

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384088%28v=vs.85%29.aspx

2) 确保您的 web.config 设置正确(我们的示例允许通过 HTTP 和 HTTPS 访问终点)

<bindings>
<basicHttpBinding>
<!-- Secure Bindings -->
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>

<binding name="httpBinding">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>

<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>

<services>
<!-- Person Revised Service-->
<service name="Services.PRPA_AR101202" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="Services.IPRPA_AR101202"></endpoint>
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="httpBinding" contract="Services.IPRPA_AR101202" />
</service>
</services>

同样,这个答案是针对带有消息的客户端证书,如果它只是普通的 HTTP,你可以忽略它

关于c# - 如何通过 WCF 设置 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502616/

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