自签名证书严格来说并不比信誉良好的 CA 签名的证书差,而且在所有技术方面它们都比普通的 HTTP 更好。
从签名和加密的角度来看,它们是相同的。两者都可以对流量进行签名和加密,因此其他人无法窥探或进行修改。
不同之处在于证书被指定为受信任的方式。使用 CA 签名证书,用户信任他们在浏览器/操作系统中安装的一组受信任的 CA。如果他们看到由其中一个签名的证书,他们会接受它,一切都很好。如果不是(例如自签名时),您会收到一个可怕的警告。
自签名证书显示此警告的原因是浏览器不知道谁控制证书。浏览器信任的 CA 以验证它们仅签署网站所有者的证书而闻名。因此,浏览器通过扩展信任证书的相应私钥由网站运营商控制(希望如此)。使用自签名证书,浏览器无法知道证书是由网站所有者生成的,还是中间某个想要读取您的流量的人生成的。为了安全起见,浏览器会拒绝证书,除非它被证明是有效的......并且你会收到一个大的红色警告。
此警告的重要之处在于它为您提供了一种获取证书信息的方法。如果您知道您希望获得什么证书,您可以信任该证书,并且您的浏览器会让您非常愉快地连接。如果您知道您希望获得的证书,这当然很棒。如果您愿意,它甚至允许您不信任任何 CA(任何受信任的 CA 都可以生成受信任的证书并拦截您的流量)。
如果您不验证证书,您将无法通过未加密的 HTTP 获得任何收益,因为您和服务器之间的任何人都可以生成自己的证书,而您将一无所知。这可能被认为比普通的 HTTP 更糟糕,因为我们人类情绪低落可能会被误导以为我们的连接是安全的,但 HTTP 唯一的技术缺点是一些浪费的 CPU 周期。
因此,对于只有几个人访问并且您可以分发证书的私人站点,自签名实际上比受信任的证书更好。但是,对于公共互联网,您不能指望用户验证证书(无论如何您将如何安全地传输详细信息),如果明智的话,他们可能会转身并运行。
至于过期证书,它们并不比有效证书差。证书过期的原因是它们在破解它们变得可行(希望如此)时失效。因此,明天到期的证书与昨天到期的证书之间的差异可以忽略不计。但是,我会非常担心几年前过期的证书。
机会加密
如果您想提供一点额外的安全性,有一个新标准(目前仅在 Firefox中实现)。
机会加密在支持客户端和服务器之间提供加密,无需身份验证。它允许您使用自签名证书而不会产生任何警告。
机会加密比使用自签名证书和 HTTPS 更好的原因是它没有向用户提供连接安全的建议。对用户而言,该连接似乎是一个常规的未加密 HTTP 连接,但实际上,SSL 连接被用来阻止被动攻击者。
同样,如果您实际上是在验证最好的自签名 SSL 证书。但是,如果您只是试图提供未经身份验证的加密来阻止流量嗅探,机会性加密提供了好处,而不会诱使用户认为他们正在使用安全连接。