【问题标题】:How to prevent clients from retrieving my server's certificate如何防止客户端检索我的服务器证书
【发布时间】:2018-01-04 02:04:12
【问题描述】:

我有一个用于移动客户端的安全 API。我想执行证书固定并且我实现了它。问题是如果运行命令openssl s_client -connect xxx.xxxxxxxxx.com:443 然后我可以看到我的证书。我相信拥有 URL 的人也可以看到证书并连接到我的 API。

如何防止访问我的证书,以便只有我的手机可以访问但不能公开?

【问题讨论】:

  • 在 TCP/IP 套接字层,无法识别客户端(如移动浏览器)。 TLS WG 考虑了一个支持它的领域,但最终拒绝了,因为他们担心协议的复杂性和用户跟踪。它不时出现在 TLS WG 上,尤其是当 SSL/TLS 堆栈存在错误时。这个想法是,SSL 堆栈指纹允许服务器解决客户端错误。上一次出现是 Apple 的 SecureTransport bug in ECDSA
  • 当您想在套接字级别过滤客户端时,通常使用 IPsec。您所有的移动客户端都会与服务器建立 VPN,并且只有那些移动客户端才能访问服务。关于固定,请参阅 OWASP 上的 Certificate and Public Key Pinning
  • asp.net-web-api 标签正在 Meta 上讨论,Why does web-api tag redirects to asp.net-web-api? 简而言之,web-api 标签可能不应该重定向到 asp.net-web-api 标签。

标签: authentication ssl asp.net-web-api web-applications certificate


【解决方案1】:

公钥加密的工作原理是让一部分(证书)免费公开。解密需要对应的私钥,并且要保密。

因此,openssl 可以访问证书没有问题 - 这正是它应该如何工作的!网络浏览器还可以获取以前没有的网站的证书。

固定添加了进一步的安全层,但将网站可以使用的证书限制为那些“固定”到网站的证书。正如在没有私钥的情况下讨论的那样,有人可以解密流量。然而,有一些相当复杂的攻击涉及拦截流量并使用他们自己的证书/私钥组合将证书替换为另一个证书,以便他们可以读取流量。固定通过明确说明应在此站点中允许哪些证书来防止这种情况。

固定不会停止公开密钥的需要,也不会仅限制来自您的移动应用的连接 - 还有其他解决方案,但固定不是。它仅用于解决针对服务器的一种类型的攻击。

固定是一个高级主题,通过固定证书,然后在更新或更改证书时不更新固定,很容易意外切断对您网站的访问。由于存在这种风险,在实施固定之前,您应该确保对所有这些工作原理有非常更多的了解。目前您似乎对基础知识有误解,因此建议不要使用固定等高级主题。

【讨论】:

    【解决方案2】:

    任何连接到 SSL / TLS 服务器的人都可以查看服务器的证书,因为它是公开的。这是正常行为。

    但这并不意味着它可以连接到您的 API。通常会添加一种身份验证机制,其中连接的人必须提供凭据,例如user/password

    使用 SSL/TLS 也可能需要客户端证书来建立安全通道。这称为双向验证。但由于分发电子证书的困难,通常不会在移动设备上使用它

    如果您还没有这样做,我建议向您的 api 添加身份验证

    【讨论】:

    • 相互认证也是一个不错的选择。我也推荐使用客户端证书来代替传统的共享密钥。基于网络的攻击者可以通过许多技巧来学习或发现共享的 API 密钥。它甚至内置于RFC 7469, Public Key Pinning with Overrides 之类的标准中(已知好的引脚组已被攻击者破坏)。基于网络的攻击者无法恢复客户端的私钥。
    • 您好 Pedrofb/Jww,同意您的方法。是的,我的移动应用程序具有用户 id/pwd 身份验证,并添加了一些令牌机制以增加安全功能。唯一担心的是,如果有人越狱打破了他们的手机,他们可能会查看我所有的应用程序详细信息(即我们从应用程序传递的令牌)。想知道如何处理这种情况。在我们的服务器中验证客户端证书会很有趣。让我google一下,看看如何实现。
    猜你喜欢
    • 1970-01-01
    • 2016-03-03
    • 2014-09-05
    • 2013-01-23
    • 1970-01-01
    • 2016-10-31
    • 2015-10-20
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多