使用传输模式证书保护WCF

时间:2014-07-24 07:14:46

标签: c# wcf x509certificate wcf-security

我正在使用传输模式的WCF服务。我需要使用证书使这项服务安全。 我按照下面链接中给出的步骤,让它在我的本地工作 http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF

我现在面临的问题是: -

  1. 在上述步骤中,我在本地运行服务以及调用本地服务的客户端应用程序。现在,对于我的QA部署,我将服务托管在一台服务器上,将我的客户端应用程序托管在另一台服务器上。
  2. 我在这两台服务器上都没有visual studio commant提示符来使用makecert创建证书。
  3. 我的服务将采用https格式。
  4. 我将使用一些第三方来获取我的作品的证书,但现在我无法弄清楚如何使我的QA环境正常工作。
  5. 我尝试创建一个证书以充当根证书颁发机构并将其安装在两个服务器中。在这种方法中,我仍然坚持如何在此根权限下创建我的客户端和服务器证书。 请让我知道如何才能使这项工作。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

终于搞定了。我必须在我的本地使用makecert创建证书,然后必须在我的QA环境中导入它们(将使用来自可信第三方的证书用于我的生产环境)。我的要求是保证我的服务安全,不允许未经授权的客户使用它。

我的服务web-config。

绑定的变化

<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>

我的客户端web-config。

绑定的变化

      <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”