![没有证书Https可以工作吗?](https://linux22.com/image/570825/%E6%B2%A1%E6%9C%89%E8%AF%81%E4%B9%A6Https%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%E5%90%97%EF%BC%9F.png)
最近,我们的基础设施团队告诉我们的开发团队,https 不需要证书。他们提到,购买证书的唯一好处是让消费者放心,他们连接的是正确的网站。
这与我对 https 的所有假设相悖。
我读维基百科其中提到您需要一个受信任的证书或自签名证书来配置 https。
是否可以配置 IIS 以响应 https 而无需任何证书?
答案1
不。您必须拥有证书。证书可以是自签名的,但必须有公钥/私钥对,以便在服务器和客户端之间交换会话对称密钥来加密数据。
答案2
简而言之,不是的,但是根据您想要如何部署系统,可能会出现一些微妙的情况。
HTTPS 是基于 SSL/TLS 的 HTTP,您可以使用 SSL/TLS无需证书或使用 X.509 以外的其他类型的证书。
- 匿名密码套件:它们可以提供加密,但没有身份验证。就安全性而言,它们毫无用处……引用RFC 4346:”强烈不建议使用匿名 Diffie-Hellman,因为它无法防止中间人攻击。“
- 预共享密钥:它有自己的机制来验证远程身份,但是密钥的共享性质带来了一系列问题(特别是有限的部署)。
- Kerberos 密码套件:客户端可以根据 Kerberos 主体名称验证服务器的身份。
严格来说,HTTP over TLS 规范内容如下:
通常,HTTP/TLS 请求是通过取消引用 URI 生成的。因此,客户端知道服务器的主机名。如果主机名可用,客户端必须根据服务器证书消息中显示的服务器身份对其进行检查,以防止中间人攻击。
如果客户端拥有有关服务器预期身份的外部信息,则可以省略主机名检查。(例如,客户端可能连接到一台地址和主机名是动态的机器,但客户端知道服务器将提供的证书。)在这种情况下,尽可能缩小可接受证书的范围很重要,以防止中间人攻击。在特殊情况下,客户端可能只需忽略服务器的身份即可,但必须明白,这会使连接容易受到主动攻击。
简而言之,它显然是用于 X.509 证书的(它明确引用了 RFC 2459,后来被 RFC 3280 和 5280 取代:具有 X.509 证书的 PKI)。
使用 Kerberos 密码套件时可能会出现极端情况。将服务器的 Kerberos 服务票证视为与通常的 HTTPS 中的 X.509 证书具有相同的用途,用于验证远程方的身份,这可能是有意义的。它不太符合 RFC 2818 的规则(尽管它可能属于“如果客户端具有关于服务器预期身份的外部信息,则可以省略主机名检查。“),但这并非完全荒谬。话虽如此,我认为通常的浏览器一般都不支持 TLS Kerberos 密码套件(许多浏览器可以通过 SPNEGO 身份验证支持 Kerberos,但这无关紧要)。此外,这也只适用于适合使用 Kerberos 的环境中。
“让消费者安心,因为他们连接到的是正确的网站“实际上是确保他们与您的服务器之间通信安全的关键要求之一。请使用他们可以验证的证书,并采用适当的命名约定(RFC 2818 或最新的 RFC 6125)。
答案3
没有任何证书,您就无法使用 https。您需要购买受信任的证书或创建自签名证书进行测试。配置 Web 服务器以使用 https 的一部分是将其指向正确的密钥文件。当然,这适用于所有 Web 服务器,而不仅仅是 iis。