代码之家  ›  专栏  ›  技术社区  ›  Prasad P

使用传输模式的证书保护WCF

  •  2
  • Prasad P  · 技术社区  · 10 年前

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

    我现在面临的问题是:-

    1. 在上面提到的步骤中,我让服务在本地运行,以及调用服务的客户端应用程序在本地运行。现在,对于我的QA部署,我将服务托管在一台服务器上,将客户机应用程序托管在另一台服务器。
    2. 我在这两个服务器中都没有visual studio命令提示符来使用makecert创建证书。
    3. 我的服务将使用https。
    4. 我将使用一些第三方来获取我的生产证书,但现在我无法确定如何在我的QA环境中使用这些证书。

    我已经尝试创建一个证书来充当根证书颁发机构,并将其安装在两个服务器中。在这种方法中,我也陷入了如何在这个根权限下创建客户机和服务器证书的问题。 请告诉我如何才能使这项工作正常进行。

    提前感谢。

    1 回复  |  直到 10 年前
        1
  •  0
  •   Prasad P    10 年前

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

    我的服务web配置。

    绑定的更改

    <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配置。

    绑定的更改

          <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=“自定义行为”