在开发机器上信任自签名证书有什么风险?

我们有开发机器,通过httpstesting正在开发的Web应用程序,因为已部署的应用程序通过https运行。

我们在hosts文件中设置了一些内部URL,因此可以使用https:// project-dev和https:// project-www来testing不同的分支。 我们也debugging在Windows Azure开发结构,导致该应用程序通过https://127.0.0.1 。 还有另外一个证书,但是它是由dev结构自动生成的。

为了使我们的浏览器忽略不安全的证书,我们将它们从个人拖动到受信任的根证书颁发机构。

这是否使我们的开发机器以任何方式脆弱? 如果是这样,怎么样?

CA签名证书和自签名证书之间的唯一区别是您的浏览器(或其他SSL客户端)不隐式信任自签名证书。 如果您信任证书,那么将其导入以便您的客户端不会发出警告,这与将证书导入其密钥库的浏览器编写者没有区别。

如果你的证书私钥泄露出来,可能会允许某个人给你MITM。

结论:不是。

总是有一点风险,但是你是一个开发人员,为了实现这个目标,人们必须明确地指定目标。

也许有一些我没有想到的,但不知何故,我认为你会做到这一点。

自签名证书不是证书颁发机构签名的证书。 由于用户的行为而变得不安全,盲目地接受和信任他们。 如果您将证书添加到受信任的根证书颁发机构,那么由该证书签名的任何证书都将被您的机器信任。 因此,如果您的一个自签名证书受到攻击,那么安装它的所有机器在中等攻击时都容易受到攻击。 最糟糕的是,你不能为他们有一个撤销清单,你必须手动删除他们的情况下,它被攻陷。

最好的方法是使用内部证书颁发机构并在您的CA中播放所有内部证书。 这是非常安全,方便和便宜。

要设置一个CA:

  1. 构build将用作CA的物理机器。 只有受信任的pipe理员才能访问此框(理想情况下为2人)。
  2. 创build一个吊销服务器,这应该不同于CA机器。 (带有撤销证书列表的服务器,至less可以在您的组织中访问)
  3. 创build一个根证书。
  4. 创build一个将用于签名的中间证书。
  5. 将根CA私钥打印在纸张上,并将纸张locking在安全的保险箱中。
  6. 销毁CA服务器的CA根私钥。
  7. 在整个公司中分发CA证书,并将其安装为受信任的CA.
  8. 分发CA中间证书并将其安装为中间CA(不受信任)。
  9. 用CA中间证书签署所有证书。 不要让有效期限超过1 – 2年。 不要让小于2048的非对称密钥。
  10. 添加到撤销列表所有妥协的证书。