我有一个适用于移动客户端的安全API。我想执行证书固定,我实现了它。问题是如果运行命令openssl s_client -connect xxx.xxxxxxxxx.com:443
,那么我可以看到我的证书。我相信无论谁拥有这个URL,他们也可以看到证书并连接到我的API。
我如何阻止访问我的证书,以便只有我的手机可以访问但不能公开?
答案 0 :(得分:2)
任何连接到SSL / TLS服务器的人都可以查看服务器的证书,因为它是公开的。这是正常行为。
但这并不意味着它可以连接到您的API。通常会添加身份验证机制,其中连接的机制必须提供凭据,例如user/password
。
使用SSL / TLS也可以要求客户端证书来建立安全通道。这称为双向身份验证。但由于难以分发电子证书,因此通常不会在移动设备上使用
如果你还没有这样做,我建议你的api添加身份验证
答案 1 :(得分:2)
公钥加密的工作原理是让一部分(证书)公开免费提供。需要相应的私钥来解密,它应该保密。
因此openssl可以访问证书没有问题 - 它究竟应该如何工作!网络浏览器也可以获取一个网站的证书。
固定增加了另一层安全性,但这限制了网站可以使用的证书,这些证书是固定的"到网站。如上所述,没有私钥,有人可以解密流量。但是,有一些相当复杂的攻击涉及拦截流量并使用自己的证书/私钥组合替换另一个证书,因此他们可以读取流量。固定通过明确说明此站点中应允许哪些证书来防止这种情况。
固定不会阻止密钥公开的需要,也不会限制来自您的移动应用程序的连接 - 还有其他解决方案,但固定不是它。它仅用于解决针对服务器的一种攻击。
固定是一个高级主题,在更新或以其他方式更改证书时,通过固定证书然后不更新引脚,很容易意外地切断对网站的访问。由于存在这种风险,您应该确保在实施固定之前对更多更好地了解所有这些工作方式。目前您似乎对基础知识存在误解,因此会针对诸如固定等高级主题提出建议。