没有有效的SSL证书,HTTPS连接是否安全?
我使用HTTPS连接而没有有效的SSL证书。 连接安全吗? 信息是否encryption?
即使SSL证书无效(过期,蛇油,不可信CA等),连接也会被encryption。 SSL证书validation只是确保你连接到你认为你连接到的人。 如果人们解密您的数据是cookies而不是PayPal,那么encryption对您没有任何好处。
实际上,可以使用Diffie-Hellman或类似的密钥交换algorithm在没有证书的完全陌生人之间build立encryption连接。
Alice和Bob同意一个随机数x 。 Alice计算x a ,其中a是仅由Alice知道的大素数,并将其发送给Bob。 Bob计算x b并将其发送给Alice。 Alice计算(x b ) a ,Bob计算(x a ) b 。 由于(x a ) b = (x b ) a = x ab ,Alice和Bob现在都知道数字x ab并可以用它作为encryption密钥。 这样做的好处在于,Bob不知道a ,Alice不知道b ,任何窃听者都不知道这两个数字(因为从a计算a ,如果数量很大,会花费数年)。
正如supercat指出的那样,这本身仍然容易受到中间人的攻击,这就是为什么至less有一端事务需要使用证书进行身份validation的原因。 但是,准确的说,不是服务器检查这个,它是浏览器,如果证书是无效的(甚至可能是垃圾),大多数浏览器会让用户继续。 在这种情况下,连接仍然比常规连接安全得多。 要进行监听,您需要能够操作IP路由或DNS查找,并且在首次build立连接之前您必须对其进行设置,这并不容易。
顺便说一下,证书中的密钥对不是用来encryption实际stream量的; 它们被用来为快速对称密码(如DES)build立一个新的一次性密钥,然后完成其余的工作。
如果没有SSL证书的validation,那么截获通信渠道的人可以获取连接到https://www.acmebank.com的请求,将其自己的请求发送到www.acmebank.com,并与两个acmebank .com和用户。 之后,它可以接收来自用户的每一个数据,用用户的密钥解密,并用acmebank的密钥进行encryption,并且使用来自acmebank.com的数据。 实际上,用户和acmebank都不会看到任何错误,但拦截器将能够解密用户和acmebank之间的所有数据。 用户和银行将使用不同的密钥来处理他们的通信,但是两个实体都不知道这一点。 向协议添加任何标准方面来查询使用哪个密钥将无济于事,因为拦截器可以检测到这样的查询并适当地改变响应。
SSL通过要求主机向接收方发送主机正在使用的密钥副本来防止中间人攻击,以入侵者无法伪造的forms进行encryption(除非入侵者可以伪造CA凭据,至less)。 如果不使用CA颁发的证书,对于中间人攻击几乎没有保护,尽pipeencryption层可以防止会话内容的被动或回溯性解密(顺便说一句,我希望有某些标准的东西在未encryption的通信和SSL之间,被动或追溯解密是主要威胁的情况,但我不知道)。
不要再打扰无效的SSL证书。 现在,您可以像生成一个蛇蝎(自签名,浏览器无效)证书一样轻松地为您的服务器生成免费的浏览器有效证书。 去看https://letsencrypt.org/它是免费的,并开放捐款。;
不。 使用HTTPS时你所做的是告诉浏览器通过不同的端口连接(443),而通常你通过(80)连接。 没有证书,服务器将拒绝连接。 没有证书,HTTPS是不可能的。 看看这里,你会看到一个证书是需要它的工作。
可以build立一个encryption的连接,是的,但是你仍然可能与一个破解的cpmputer而不是真正的服务器通信。 就像这样,破解的计算机告诉服务器,他将成为客户端,解密所有的数据,存储它,并将encryption的数据发送到客户端(并告诉他他将是服务器)。 所以如果服务器和客户端之间没有易受攻击的地方,那么这只是一个安全的连接,这是人们无法保证的。