自签名SSL证书是否安全?


33

当我登录到我的网络邮件,phpMyAdmin等时,我想建立一个安全的连接。

因此,我用OpenSSL签署了自己的SSL证书,并告诉Apache监听端口443。

这实际上安全吗?我所有的密码是否真的通过安全层发送?如果我从Verisign购买SSL证书或签署自己的SSL证书,会有什么区别?归根结底,所有数据仍将在我的服务器上。那么,最大的区别是什么?

Answers:


40

这全都与信任有关。如果您从verisign获得签名证书,则可以向随机客户端证明您的证书受信任。如果您对证书进行自我签名,那么未在计算机上安装证书的人将无法确定他们不会受到中间人攻击

如果您仅使用Web服务器,则不需要真正的CA(例如verisign)即可对证书进行签名。只需将证书安装在要使用的计算机上,就可以了。

编辑:所以回答您的问题:是的,所有内容都是加密的,如果您知道提供给Web浏览器的证书实际上是您设置Web服务器所用的证书,则可以确保没有人可以读取您的敏感数据。


12
CA的目的是向他人证明证书属于您所说的证书的所有者。由于您已经知道证书属于谁,因此就您访问自己的服务器并提供自己的证书而言,CA无用。但是,其他人无法安全访问您的服务器,因为他们无法知道要信任的证书。(您知道吗?请相信您发出的
David Schwartz 2012年

如果有少数可以直接与您联系以验证证书的用户可以访问服务器,例如,您的家庭成员或小公司的员工,这也是一种合理的方法。
bgvaughan 2012年

与CA协调的中间人是否可以覆盖某人的自签名证书?例如,鲍勃(Bob)连接到爱丽丝(Alice)的自签名网站,斯卡(Scar)向鲍勃(Bob)发送由CA Scar签名的另一个证书,该证书与之协调,鲍勃(Bob)的浏览器从不显示SSL警告。这可能吗?
Hello World

14

这全都与信任有关。

假设您访问提供证书的受欢迎网站。这是一个网站,上面写着“这就是我,您可以信任我,因为我的这份介绍信由信任的人签名。”

在这种情况下,“您信任的人”是证书颁发机构之一,他们(有希望)在代表您建立证书提交者的身份方面进行了全面的工作。

您真正信任的是浏览器作者对证书颁发机构对提供证书的人的身份的信任。您与演示者之间通常也有多个权限,因此称为“信任链”。[1]

当您签署自己的证书时,没有信任链。您的网站正在向您提供您自己的证书。如果您在浏览器中安装自己的证书作为一个信任的,那么被视为权威,一样都预装的人。然后,您将获得只有一个链接的信任链。

如果您随后访问自己的站点,并且浏览器警告您该站点正在提供不受信任的证书,则应该引起关注,因为与其他任何站点上提供不受信任的证书一样,您无法确定您正在与真实网站进行交流。

注意,我还没有提到加密。证书与验证您正在与之通信的一方的身份有关。通过受信任的证书,可以合理地确保您的商店或银行是真实的。一旦确定了他们的身份,下一步就是保护您之间的通信。碰巧的是,证书中也包含促进这种安全性所需的密钥。假设您已经正确设置了SSL,那么此通信与您在商店或银行中进行的通信一样安全,并且您的密码同样受到保护。[2]

[1]这绝不是一个完美的系统。自由市场和低利润,大批量业务不可避免地导致成本削减:http : //www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2]至少要有足够的保护,以使有人闯入您的房子比敲碎您的秘密而不是试图破解它们便宜得多:http : //xkcd.com/538/


11

事实上,自签名的证书可以是安全的,只是没有我们现在正在使用的模式下。


每个人当前使用的广泛使用的CA(证书颁发机构)模型下,由受信任的CA签署证书的目的是提供身份验证。

当我们获得证书时,我们真正看到的只是从墙上的插孔传来的1和0。我们不知道那1和0的来源。但是,由于证书是由CA 签名的,因此CA可以验证证书所有者的身份,因此我们信任CA来验证证书所有者的身份,因此,我们相信证书来自其主张的人至。

当然,如果CA受到损害或未正确验证所有者,则所有选择均无效


但是,还有另一种模式,在这种模式下,自签名证书确实可以提供真实性。这称为公证模型

本质上,而不是信任一个CA,我们经销的信任任意数量的公证人。这些公证人搜寻Internet上的证书,以保留他们所看到的所有证书的缓存。首次访问站点并获得证书时,您会询问许多在全球分布的公证人他们看到的最后一个证书是什么。如果他们不同意您所看到的内容,则您可能会成为中间人攻击的一部分。

在这种模型下,只要我们假设在没有任何公证人可以查看其证书之前,服务器不会立即受到损害,自签名证书就绝对安全。


公证模型仍处于起步阶段,它是否有可能取代CA模型(实际上,它不是必须的-可以串联使用)。到目前为止,最有前途的项目是Convergence.io,它具有Firefox插件。


2

信任并不是全部。

SSL证书可以用于两个目的-1)是要连接到要连接到的Web服务器;2)对通信进行加密。

您可以在没有#1的情况下拥有#2,这就是您已经完成的。然后剩下的就是验证您要连接的盒子是否是您想要的那个。

如果它是我的服务器,那么使用我自己的自签名证书不会有问题-尽管存在某些人可能会欺骗他人使我连接到他们的服务器而不是我的服务器的风险。由于没有人关心我和我的服务器,并且在这里我没有什么价值,因此我认为这样做没有太大的风险。

另一方面,如果不是您的服务器,而是您的服务器,那么我会担心的。


您是否要说:“如果是您的服务器,那么我不会担心”?
cherrun

不,他说:“如果这是我的服务器,我没有问题...如果是您的服务器,那么我有问题”。
Francesco'2

你不对 没有人可以欺骗您来连接到他们的服务器而不是您的服务器。它们没有与您颁发的自签名证书相对应的密钥,并且不能向您提供其他证书,因为您不会接受。
David Schwartz

@cherun我的意思是我相信我-不是您(或其他任何人)。您可以/应该相信自己。
uSlackr 2012年

1
-1。使用握手过程中协商的对称密钥来完成加密。当然,您可以使用证书来检查远程方的身份,否则,对通信进行加密的一点也没有(可能是MITM)。如果是您的服务器和自签名证书,则将证书显式导入客户端。
布鲁诺
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.