0

我找到了以下方案,通过使用自定义根 CA 来保护企业软件的各个部分。这是做这种事情的正确方法吗?这种方式有问题吗?

方案:

  1. 我有我的自定义根 CA。有一组由该 CA 创建的简单证书。
  2. 有一个 .NET 程序集集。来自集合 A 的程序集使用来自我的 CA 的证书 A 签名,来自集合 B 的程序集使用来自我的 CA 的证书 B 签名。
  3. 有一组信任我的 CA 的客户端(在证书管理单元中的第三方根 CA 文件夹中有它的证书)。
  4. 使用受信任证书签名的程序集可以正常工作,使用不受信任证书签名的程序集将无法正常工作。
  5. 我撤销了证书 B(在我的具有根 CA 的服务器上)。

问题:

  1. 信息(证书 B 被吊销)是否会使用 OCSP 自动发送给每个客户端?
  2. 是否每个程序集负载都会使用 Internet 连接进行 OCSP 调用?是否每台装有我的程序集的计算机都会进行此类调用?
  3. 如果域中的一台计算机没有互联网连接,它会继续信任被撤销的证书吗?
  4. 它是受保护的方式吗 - 客户端可以中断 OCSP 请求、阻止我的服务器地址等吗?
  5. 证书 B 是否会自动放置到客户端服务器上的 Untrusted Certificates 文件夹中?
  6. 那么,一般来说,客户端可以让我的软件使用不受信任的证书吗?
  7. 是否可以从程序集中清除此证书标志?
4

1 回答 1

1

假设 OCSP 配置正确:

1) 撤销应存储在验证机构数据库中,并应要求确认。OCSP 响应者将知道证书 B 的吊销。客户应该询问。

2)我不知道互联网连接,但是证书提供了一个验证机构 url 来验证证书,或者客户端已经配置了一个。如果这样的 URL 是互联网 URL,答案是肯定的。

3)我认为不会,毕竟证书可能会被泄露。也就是说,如果您使用的是自定义根 CA,则应该需要互联网连接。网络访问是的,但没有更多。

4) OCSP 请求已签名,因此需要付出很大的努力才能破坏它并伪造响应。它可以做到,但我想如果有人能做到,它可以做更多有趣的事情。

5) 我认为是的。如果 OCSP 请求完成并且证书被吊销,那么它将进入不受信任的证书。这是 Windows 标准行为。

6) 这是一个广泛的问题,如果您使用证书进行代码签名,并且它由 CLR 执行,您应该能够加载已签名的程序集。但可能有办法。

7) 我猜是这样,如果你可以用 ILSpy 或类似工具打开程序集,你也许可以得到一些版本的源代码并重新编译它。与 ILDASM 相同

它安全吗?是的,差不多。但是,如果您需要额外的安全性,您应该混淆您的代码并提供一个内部验证步骤,例如您通过 OCSP 显式验证的程序集中的嵌入式证书,并且该过程中的任何故障都会阻止进一步使用您的代码。

于 2013-02-07T14:09:48.270 回答