【问题标题】:Use SSL for authentication only仅使用 SSL 进行身份验证
【发布时间】:2012-06-18 09:08:36
【问题描述】:

我想创建新的 WCF 服务和客户端。 2 方将使用 2-way SSL 进行通信。

我只想将 SSL 用于身份验证阶段。在此认证之后,不需要加密。我可以将我的服务(和客户端)配置为仅使用 SSL 进行身份验证,并且不加密连接(性能问题)吗?

【问题讨论】:

    标签: c# .net wcf ssl wcf-security


    【解决方案1】:

    为什么要在身份验证后不加密连接?

    用户名和密码将以一种或另一种方式通过网络传递,因此您应该考虑始终加密连接以避免泄露该信息。

    编辑: 如果您使用的是证书,则必须始终对其进行加密,因为我知道您不能使用证书进行身份验证,然后再回到简单的 HTTP。 WCF 需要为每个请求对客户端进行身份验证(如果该客户端暂时无法获得证书,则将其删除并使用您的 WCF 服务,就像什么都没发生一样,因为不再需要身份验证,这在您的情况下是不正常的) .

    【讨论】:

    • 为什么要转移用户并通过?我们根本没有这些信息。我只是希望服务(没有用户)相互信任。
    • 证书就是凭证。
    • @Mattan 如果传输未加密,为什么用户在证书交换后继续相互信任?针对 MITM 的保护措施在哪里?
    • 是的,我知道它给我的安全性要低得多,但我认为因为我们存在性能问题,我们无法加密传输层。无论如何,我认为只提供 SSL 身份验证比简单的 HTTP 更好。它不受 MITM 保护,但受到其他对待的保护。
    【解决方案2】:

    如果您想使用客户端证书执行身份验证(我假设您的意思是“2-way”SSL),您可以使用具有 NULL 加密的密码套件,例如TLS_RSA_WITH_NULL_SHA.

    否则,如果您的身份验证方案是 SSL/TLS 之上的应用层的一部分,您当然应该考虑使用加密。

    请注意,使用TLS_RSA_WITH_NULL_SHA 仍然会在握手中进行 RSA 密钥交换(即使最终没有实际使用共享加密密钥)。 SSL/TLS 握手是使用 SSL/TLS 中计算量最大的部分。实际的加密对性能的影响应该不会那么大,所以您不妨保持开启状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2012-03-05
      • 2021-06-10
      • 2012-10-14
      相关资源
      最近更新 更多