Ric*_*ian 2 ssl nginx pinning public-key
有什么方法可以在没有公共证书的情况下配置 Nginx 吗?
这里的目标是,我想在公共互联网上发布 API,但所有 API 客户端(白名单客户端)都应该在其应用程序中 SSL 固定公共证书,而不是根据请求获取临时证书。所以我们不需要nginx来发布公共证书。
我知道公共证书公开共享是无害的,但这个特殊的要求来自我们的企业客户。他们甚至询问我们是否可以在 nginx 中放入无效的公共证书...因此,当没有真正公共证书的“攻击者”会将 API 视为错误时,而真正的 ssl 固定客户端将能够使用API 正常。
dav*_*dgo 13
您提出的问题(和理由)在技术上并没有多大意义。我可以做一些陈述,希望对你有帮助——
要在没有公共证书的情况下配置 NGinx,您可以使用 HTTP(即放弃加密)。HTTPS 是围绕公共/私有加密设计的,因此 Nginx 不使用它是没有意义的。
您可以创建自签名证书,并让用户“固定”该证书。您还可以使用自签名 CA 证书创建自己的 CA,以便可以颁发多个证书。
您的企业客户不知道他们不知道多少。攻击者只需接受无效证书并继续。证书对浏览器和服务器之间的会话进行加密 - 如果没有公共证书,它不会阻止浏览器访问内容,也不意味着服务器可以信任客户端。
如果您想提高安全性,请查看客户端证书。这几乎与您所说的证书类型相反。实际上,您运行自己的 CA,并签署公钥 - 然后要求在客户端与您通信时使用这些密钥(大多数浏览器都支持这一点,但让您考虑部署并不简单 - 它虽然很实用)这基本上验证了服务器的客户端。如果客户端都通过 API 进行通信 - 这不是 API 的常见做法,但应该告诉您一些信息 - 为什么不只使用常规 HTTPS 证书,然后使用共享密钥?
Ste*_*ich 10
...但是所有 API 客户端(白名单客户端)都应该在其应用程序中 SSL 固定公共证书,而不是根据请求临时获取证书。所以我们不需要nginx来发布公共证书。
如果服务器不提供证书,则无法进行基于证书的服务器身份验证。这包括在客户端中固定证书 - 这要求服务器也发送证书,以便根据固定证书进行验证。
可以让 nginx 使用自签名证书或私有 CA 颁发的证书。没什么特别的,配置这个证书就可以了。当客户端仅检查是否提供特定证书时,该自签名证书可能不包含主题等任何真实信息,尽管与私钥匹配,但它确实需要包含公钥。
他们甚至询问我们是否可以在 nginx 中放入无效的公共证书...因此,当没有真正公共证书的“攻击者”会将 API 视为错误时,而真正的 ssl 固定客户端将能够使用API 正常。
不可能向某些客户端(好的客户端)提供一个证书,而向其他客户端(坏的客户端)提供不同的证书,除非可以在 TLS 握手内发送证书之前区分客户端。这种区分可以仅根据基于 TCP 的信息(例如源 IP 地址)来完成。或者客户端可以在 SNI 中使用一些隐藏的非公共域名(即与 DNS 查找中使用的域名不同),它与 nginx 中的不同配置相匹配。
| 归档时间: |
|
| 查看次数: |
2149 次 |
| 最近记录: |