我在传输模式下使用 WCF 服务。我需要使用证书确保此服务的安全。 我按照以下链接中给出的步骤进行操作,并在我的本地运行 http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF
我现在面临的问题是:-
- 在上述步骤中,我的服务在本地运行,调用该服务的客户端应用程序也在本地运行。现在,对于我的 QA 部署,我将服务托管在一台服务器上,将我的客户端应用程序托管在另一台服务器上。
- 我在这两个服务器中都没有使用 makecert 创建证书的 visual studio 命令提示。
- 我的服务将使用 https。
- 我将使用一些第三方来为我的产品获取证书,但现在我无法弄清楚如何让它在我的 QA 环境中工作。
我已经尝试创建一个证书来充当根证书颁发机构并将其安装在两台服务器上。在这种方法中,我也不知道如何在这个根权限下创建我的客户端和服务器证书。 请让我知道我怎样才能让这个工作。
提前致谢。
最佳答案
终于成功了。我必须在我的本地使用 makecert 创建证书,然后必须将它们导入我的 QA 环境(将使用来自受信任的第三方的证书用于我的生产环境)。我的要求是确保我的服务安全,不允许未经授权的客户使用它。
我的服务网络配置。
绑定(bind)的变化
<bindings>
<basicHttpBinding>
<binding name="basicHttpEndpointBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings
行为改变。
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="ChainTrust" revocationMode="NoCheck" />
</clientCertificate>
</serviceCredentials>
我的客户端网络配置。
绑定(bind)的变化
<binding name="">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="Certificate" />
</security>
</binding>
添加行为
<behaviors>
<endpointBehaviors>
<behavior name="CustomBehavior">
<clientCredentials>
<clientCertificate findValue="RootCATest"
x509FindType="FindByIssuerName"
storeLocation="LocalMachine"
storeName="My"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
将此行为附加到端点
行为配置="自定义行为"
关于c# - 使用传输模式证书保护 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927297/