【问题标题】:Securing WCF using Certificates for Transport Mode使用传输模式证书保护 WCF
【发布时间】:2014-07-24 07:14:45
【问题描述】:
我正在使用带有传输模式的 WCF 服务。我需要使用证书使这项服务安全。
我按照下面链接中给出的步骤,让它在我的本地工作
http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF
我现在面临的问题是:-
- 在上述步骤中,我让服务在本地运行,我的客户端应用程序在本地运行调用该服务。现在,对于我的 QA 部署,我将服务托管在一台服务器上,并将我的客户端应用程序托管在另一台服务器上。
- 我在这两个服务器中都没有使用 makecert 创建证书的 Visual Studio 命令提示符。
- 我的服务将在 https 中。
- 我将使用一些第三方来获取我的生产证书,但现在我无法弄清楚如何让它适用于我的 QA 环境。
我已尝试创建一个证书以充当根证书颁发机构并将其安装在两台服务器中。在这种方法中,我也被困在如何在这个根权限下创建我的客户端和服务器证书。
请让我知道我怎样才能让它工作。
提前致谢。
【问题讨论】:
标签:
c#
wcf
x509certificate
wcf-security
【解决方案1】:
终于搞定了。我必须在本地使用 makecert 创建证书,然后必须在我的 QA 环境中导入它们(将在我的生产环境中使用来自受信任的第三方的证书)。我的要求是确保我的服务安全,不允许未经授权的客户使用它。
我的服务网络配置。
绑定的变化
<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>
我的客户网络配置。
绑定的变化
<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>
将此行为附加到端点
behaviorConfiguration="CustomBehavior"