如何防止客户端检索我的服务器证书
How to prevent clients from retrieving my server's certificate
我有一个安全的 API 移动客户端。我想执行证书固定并且我实现了它。问题是如果 运行 命令 openssl s_client -connect xxx.xxxxxxxxx.com:443
那么我可以看到我的证书。我相信谁拥有 URL,他们也可以看到证书并连接到我的 API。
如何防止访问我的证书,以便只有我的手机可以访问而不是 public?
任何连接到 SSL/TLS 服务器的人都可以查看服务器的证书,因为 public。这是正常行为。
但这并不意味着它可以连接到您的 API。通常会添加一种身份验证机制,连接的人必须提供凭据,例如 user/password
.
使用 SSL/TLS 也可以要求客户端证书来建立安全通道。这称为双向身份验证。但由于电子证书分发困难,通常不在移动设备上使用
我建议为您的 api 添加身份验证,如果您还没有这样做的话
Public 密钥密码学的工作原理是 public 可以免费获得一部分(证书)。需要对应的私钥才能解密,注意保密。
因此,openssl 访问证书没有问题 - 这正是它应该如何工作的! Web 浏览器也将能够获取以前没有的网站的证书。
固定增加了一层安全性,但将网站可以使用的证书限制为网站 "pinned" 的证书。正如在没有私钥的情况下讨论的那样,有人可以解密流量。然而,有一些相当复杂的攻击涉及拦截流量并使用他们自己的 certificate/private 组合键将证书替换为另一个证书,因此他们 可以 读取流量。固定通过明确说明该站点应允许哪些证书来防止这种情况。
固定不会停止将密钥设置为 public 的需要,也不会仅限制来自您的移动应用程序的连接 - 还有其他解决方案,但固定不是。它仅用于解决针对服务器的一种类型的攻击。
固定是一个高级主题,通过固定证书然后在续订或以其他方式更改证书时不更新固定,很容易意外切断对您站点的访问。由于存在这种风险,您应该确保在实施固定之前对所有这些工作原理有 much 更深入的了解。目前您似乎对基础知识有误解,因此建议您不要使用固定等高级主题。
我有一个安全的 API 移动客户端。我想执行证书固定并且我实现了它。问题是如果 运行 命令 openssl s_client -connect xxx.xxxxxxxxx.com:443
那么我可以看到我的证书。我相信谁拥有 URL,他们也可以看到证书并连接到我的 API。
如何防止访问我的证书,以便只有我的手机可以访问而不是 public?
任何连接到 SSL/TLS 服务器的人都可以查看服务器的证书,因为 public。这是正常行为。
但这并不意味着它可以连接到您的 API。通常会添加一种身份验证机制,连接的人必须提供凭据,例如 user/password
.
使用 SSL/TLS 也可以要求客户端证书来建立安全通道。这称为双向身份验证。但由于电子证书分发困难,通常不在移动设备上使用
我建议为您的 api 添加身份验证,如果您还没有这样做的话
Public 密钥密码学的工作原理是 public 可以免费获得一部分(证书)。需要对应的私钥才能解密,注意保密。
因此,openssl 访问证书没有问题 - 这正是它应该如何工作的! Web 浏览器也将能够获取以前没有的网站的证书。
固定增加了一层安全性,但将网站可以使用的证书限制为网站 "pinned" 的证书。正如在没有私钥的情况下讨论的那样,有人可以解密流量。然而,有一些相当复杂的攻击涉及拦截流量并使用他们自己的 certificate/private 组合键将证书替换为另一个证书,因此他们 可以 读取流量。固定通过明确说明该站点应允许哪些证书来防止这种情况。
固定不会停止将密钥设置为 public 的需要,也不会仅限制来自您的移动应用程序的连接 - 还有其他解决方案,但固定不是。它仅用于解决针对服务器的一种类型的攻击。
固定是一个高级主题,通过固定证书然后在续订或以其他方式更改证书时不更新固定,很容易意外切断对您站点的访问。由于存在这种风险,您应该确保在实施固定之前对所有这些工作原理有 much 更深入的了解。目前您似乎对基础知识有误解,因此建议您不要使用固定等高级主题。