c# - 使用传输模式证书保护 WCF

标签 c# wcf x509certificate wcf-security

我在传输模式下使用 WCF 服务。我需要使用证书确保此服务的安全。 我按照以下链接中给出的步骤进行操作,并在我的本地运行 http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF

我现在面临的问题是:-

  1. 在上述步骤中,我的服务在本地运行,调用该服务的客户端应用程序也在本地运行。现在,对于我的 QA 部署,我将服务托管在一台服务器上,将我的客户端应用程序托管在另一台服务器上。
  2. 我在这两个服务器中都没有使用 makecert 创建证书的 visual studio 命令提示。
  3. 我的服务将使用 https。
  4. 我将使用一些第三方来为我的产品获取证书,但现在我无法弄清楚如何让它在我的 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/

相关文章:

c# - 有没有办法将 C# 类或库自动转换为 Visio?

c# - 使用 WCF 数据服务进行分页

c# - 如何确定 WCF 服务已准备就绪?

c# - StructureMap(或任何 IoC)和 WCF

ssl - 如何使用 OpenSSL 生成带有 SubjectAltName 的自签名证书?

c# - 如何验证远程 ssl 证书?

java - 从字符串在 Android 上创建 X509Certificate

c# - 如何使用 BLE 开发 Windows C# App

c# - Encoding.UTF8.GetString 和 Encoding.UTF8.GetBytes 不是彼此相反的原因是什么?

c# - 关于列表选择器过滤的指南