使用自签名证书时是否可以防止中间人攻击?

时间:2012-07-30 16:50:01

标签: ssl https openssl ssl-certificate public-key-encryption

我不确定之前是否有类似的问题(我找不到),但是有可能保护客户端/服务器免受中间人攻击吗?

我正在编写一个与Server通信的客户端应用程序。通信将基于SSLv3。 我对服务器的自签名证书没问题,但担心其他人在同一服务器名称中生成相同的自签名证书并假装是它。我的客户端应用程序使用OpenSSL库。 [客户端和服务器是基于节俭的,如果它有任何区别]。我是否可以在保持对自签名证书的支持的同时避免此类攻击?

4 个答案:

答案 0 :(得分:12)

是。

简而言之,只有当客户端事先不知道证书时,自签名证书才比CA证书更不安全,因此无法验证服务器是否是它所说的。

如果您将自签名证书添加到客户端并且不接受任何其他证书,那么您实际上与拥有证书一样安全(或者,可以说,甚至更多)权威签署证书。

使用或不使用证书颁发机构来保持SSL安全的重要部分是;

  • 服务器私钥(如果是CA,则是其所有根的私钥)保密。
  • 客户端知道服务器证书(或其CA根目录)。

答案 1 :(得分:4)

您可以对服务器的证书进行硬编码,并将其与您收到的证书进行比较。

或者更好的是,创建由CA签名的CA证书和服务器证书。让CA在客户端上受信任(再次通过在应用程序中对其进行硬编码)并使用CA证书验证收到的服务器证书。

答案 2 :(得分:1)

如果您可以充分保护您的私钥,假设用户实际查看证书,中间人将无法伪装成您。自签名的问题是,如果您希望用户将异常添加到其浏览器中,或者只是忽略该警告,那么您将面临中间人攻击,因为其他人可能会创建自己的证书。

当然,“足够好地保护您的私钥”并非易事。当您支付“Verisign”证书时,您不会为创建证书的软件付费 - 您需要为他们保护存储私钥的建筑物的安全部队付费。

答案 3 :(得分:0)

这很简单!不!您再也无法阻止来自知名权威机构颁发的证书的中间人攻击。 >:)