【问题标题】:WCF Certificate Configuration with ASP.NET使用 ASP.NET 配置 WCF 证书
【发布时间】:2011-10-19 07:57:39
【问题描述】:

简而言之,这是场景。我有一个使用表单身份验证和自定义成员资格提供程序的 ASP.NET 应用程序。我使用 ServiceHostFactory 创建了一个 WCF 客户端和一个 ASP.NET ServiceHost。到目前为止一切正常,但要在现实世界中部署它,我需要确保它的安全。我似乎无法找到如何为服务设置证书。我想使用已与托管我的服务的 ASP.NET 应用程序关联的证书。

如何设置证书以自动将证书设置为托管 Web 应用程序的证书,而无需手动识别证书。如果用户必须安装 WCF 程序集并对配置文件进行更改并且必须知道安装了什么证书,这将是一个真正的 PITA。

到目前为止,这是我收集的内容,但无法让它工作,并且在安装过程中如果不重新编译就无法配置。

serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByIssuerDistinguishedName, "mycertificate");

是否有一个 ASP.NET Api 可以返回与我可以传递给 SetCertificate 的托管应用程序关联的证书?另外,如果没有安装证书,但我仍然希望 WCF 连接,尽管不安全,我该如何处理?

【问题讨论】:

    标签: wcf certificate ssl-certificate


    【解决方案1】:

    这取决于您是要使用传输级还是消息级安全性。如果您只想让您的 Web 服务像任何其他网页一样通过 https 工作,那么在您的 WCF 配置中,您不需要指定证书,您只需启用传输安全性,例如:

      <basicHttpBinding>
        <binding name="basicHttpsSecured" sendTimeout="00:02:00">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    

    然后在 IIS 中,您在网站上设置 SSL 证书,就像在任何其他 ASP.NET 网站上一样。如果你不是通过 IIS 托管它,而是让它成为一个自托管的 windows 服务或其他东西,那么你必须在你的配置中设置证书,但是在 IIS 中托管时,你可以让 IIS 完成工作。

    如果您想要进行消息级别的安全性,这意味着您正在通过非安全的常规 http 传输,但您的消息内容是加密的,那么您可以设置

    <security mode="Message">
    

    关于绑定,并指定用于加密消息的证书。但是,听起来您正在谈论将 ssl / https 用于您的网络服务。

    【讨论】:

    • 您认为使用传统的 ssl/https 是传输财务数据的最佳实践吗?如果我确实使用消息安全性,我是否必须提供证书?如果是这样,我可以将我的证书保存在我的 .svc 文件所在的位置吗?如果是这样,我如何告诉 WCF 它在哪里?我想让部署尽可能简单。
    • 对于敏感的财务和/或信用卡数据,您可能需要同时使用传输和消息安全性。但是,为了确保消息安全,客户端需要证书。我过去接触过一些信用卡处理公司,他们甚至会为每个客户颁发一个唯一的证书,因此没有 2 个 Web 服务用户使用相同的证书,因此无法解密彼此的消息。
    • 另外,这篇 MSDN 文章可能会有所帮助,它有一种逐步设置证书身份验证的方法:msdn.microsoft.com/en-us/library/ff648360.aspx
    • 只是为了争论硬币的另一面,如果您将您的信用卡号输入亚马逊,或者您的银行信息输入贝宝,您只是通过 HTTPS 传输它,这相当于传输WCF 中的安全性。很多人都使用它,这就足够了。因此,这取决于您的业务/安全决策。
    • 刚刚发现一个问题。 service.svc 文件位于 admin 文件夹下,并使用自定义成员资格提供程序通过表单身份验证进行保护。如果我把它放在根目录下,它会自动将我的 URL 更改为 http 而不是 https。这是第三方产品,我无法控制它。
    猜你喜欢
    • 2011-09-23
    • 2012-05-25
    • 2010-09-25
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2012-12-02
    相关资源
    最近更新 更多