Https可以在没有证书的情况下工作吗?


9

最近,我们的基础架构团队告诉我们的开发团队,您不需要https的证书。他们提到购买证书的唯一好处是让消费者放心他们正在连接到正确的网站。

这违背了我对https所做的所有假设。

我阅读了维基百科,其中提到您需要信任的证书或自签名证书来配置https。

是否可以将IIS配置为在没有任何证书的情况下响应https ?


7
您可能会发现这只是一个沟通问题。您的服务器可能已准备好自签名证书。顺便说一句,您可以使用公共信任的证书来避免此警告:m86security.com/kb/article.aspx? id = 13446在您的环境中可以接受,也可以不接受。我想说的不只是让您省心-在公共网站上,这是专业精神的标志!

5
自签名证书可为您提供加密功能,但是它不能抵御来自中间人的攻击,因为您会收到与自签名证书的无效或未验证证书相同的警告,就像某些人拦截流量,将其解密,窃取数据,然后重新加密以返回客户端。
巴特·

1
“自签名证书为您提供了加密,但是它无法防止中间攻击的人。”,除非用户可以通过某种带外机制明确信任那些自签名证书,只有通过这种带外机制了解您的小型用户群才有实际可能。确实不可能。
布鲁诺,

或者,如果他们第一次信任它,那么将来它会发生变化时,他们会得到警告。就像SSH签名一样。
mfinni 2011年

1
从技术上讲,SSL / TLS 不需要证书来保护通信通道。实际上,它的SSL / TLS可以使用其他机制来保护通道安全:pgp证书,用户名/密码,预共享密钥或“匿名”(完全没有身份验证)。同样,SSL / TLS不能保证加密,它可以使用许多不同的密码,包括“空”(完全不加密)。摘要认证也有类似的选项。因此,这一切都很好,但是什么程序使用其中的任何一个:基本上根本没有,绝对没有主要的服务器或浏览器软件(它们都需要证书)。
克里斯·S

Answers:


24

否。您必须具有证书。它可以是自签名的,但是必须有一个公用/专用密钥对,才能在服务器和客户端之间交换会话对称密钥来加密数据。


另一个答案中提到,匿名Diffie-Hellman确实允许没有证书的连接-但是现代OpenSSL版本通常在不支持ADH的情况下进行编译。
布兰登·罗兹

12

简而言之,不是,但是根据您想要如何部署系统,情况可能会有些微妙。

HTTPS是基于SSL / TLS的HTTP,您可以不使用证书或使用X.509以外的其他类型的证书来使用SSL / TLS 。

  • 匿名密码套件:它们可以提供加密,但无需身份验证。就安全性而言,它实际上是没有用的……引用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)使用可以验证的证书。


1

没有任何证书都不能使用https。您需要购买可信证书或创建自签名证书进行测试。将Web服务器配置为使用https的一部分是将其指向正确的密钥文件。当然,这不仅适用于iis,而且适用于所有Web服务器。


要测试您的OpenSSL是否可以支持无证书连接,请运行openssl ciphers并查找ADH类似的协议ADH-AES256-SHA-如果存在这样的协议,则可以从技术上建立不涉及任何证书的连接。
Brandon Rhodes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.