如何防止客户端检索我的服务器证书

时间:2017-07-28 06:12:29

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:2)

公钥加密的工作原理是让一部分(证书)公开免费提供。需要相应的私钥来解密,它应该保密。

因此openssl可以访问证书没有问题 - 它究竟应该如何工作!网络浏览器也可以获取一个网站的证书。

固定增加了另一层安全性,但这限制了网站可以使用的证书,这些证书是固定的"到网站。如上所述,没有私钥,有人可以解密流量。但是,有一些相当复杂的攻击涉及拦截流量并使用自己的证书/私钥组合替换另一个证书,因此他们可以读取流量。固定通过明确说明此站点中应允许哪些证书来防止这种情况。

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

固定是一个高级主题,在更新或以其他方式更改证书时,通过固定证书然后不更新引脚,很容易意外地切断对网站的访问。由于存在这种风险,您应该确保在实施固定之前对更多更好地了解所有这些工作方式。目前您似乎对基础知识存在误解,因此会针对诸如固定等高级主题提出建议。