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

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

我们有开发机器,可以通过 https 测试正在开发中的 Web 应用程序,因为部署的应用程序是通过 https 运行的。

我们在 hosts 文件中设置了几个内部 URL,以便https://项目开发https://项目-www可用于测试不同的分支。我们还在 Windows Azure Dev Fabric 中进行调试,这会导致应用程序https://127.0.0.1。还有另一个证书,但它是由 dev fabric 自动生成的。

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

这是否会让我们的开发机器受到某种程度的攻击?如果是,那会怎样?

答案1

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

答案2

潜在的情况是,如果您的证书私钥泄露,某人可能会对您进行 MITM 攻击。

结论:并非如此。

总是会存在一点风险,但是为了实现这一点,你们是一些开发人员,必须有人明确针对你们。

也许有些事情我没有想到,但是不知何故我想你会成功的。

答案3

自签名证书并不比证书颁发机构签名的证书更容易受到攻击。它变得不安全是因为用户的行为,他们会盲目地接受和信任它们。如果您将证书添加到受信任的根证书颁发机构,则由该证书签名的任何证书都将受到您的计算机的信任。因此,如果您的自签名证书之一被盗用,则安装该证书的所有计算机都容易受到中间人攻击。最糟糕的是,您无法为它们提供撤销列表,并且必须在证书被盗用的情况下手动将其删除。

最好的方法是使用内部证书颁发机构,并与您的 CA 签署所有内部证书。这既安全又方便,而且便宜。

要设置 CA:

  1. 构建一台将用作 CA 的物理机器。只有受信任的管理员才能访问此机器(理想情况下为 2 人)。
  2. 创建一个撤销服务器,该服务器应与 CA 机器不同。(具有已撤销证书列表的服务器,至少可在整个组织内访问)
  3. 创建根证书。
  4. 创建用于签名目的的中间证书。
  5. 将根 CA 私钥打印在纸上,并将纸锁在安全的保险箱中。
  6. 销毁来自CA服务器的CA根私钥。
  7. 在整个公司内分发CA证书,并将其安装为受信任的CA。
  8. 分发 CA 中级证书并将其安装为中级 CA(不受信任)。
  9. 使用 CA 中级证书签署所有证书。不允许有效期超过 1-2 年。不允许非对称密钥小于 2048。
  10. 将所有受损证书添加到撤销列表中。

相关内容