Apache和mod_ssl与多个远程CA一起用于客户端证书

生成客户端证书通过成为您自己的CA与Apache Web服务器是微不足道的工作,并有大量的文件如何实现这一点。 我的问题稍有不同。

我有几个客户想要拥有自己的PKI基础设施。 他们希望能够生成自己的客户端证书并撤消它们。 我们的networking服务器仍然负责授权他们访问我们的networking服务。

任何人都可以听到我可以看到的一些可能的解决scheme吗? 我看到Apache 2.3有一些SSLOCSP *相关的​​指令( http://httpd.apache.org/docs/2.3/mod/mod_ssl.html ),但我并不是完全兴奋使用Apache 2.3甚至更多,所以,它看起来像浏览器对SSLOCSP *有限制,我们正在处理那些不能接受的客户端。

目前还没有真正的自动化方法。

我并不真正热衷于SSL*Path指令,因为它们可能会很麻烦。 所以我们所做的是使用SSLCACertificateFileSSLCADNRequestFileSSLCARevocationFile 。 然后一些Python脚本来处理CRL更新,如下所示:

  1. 从CRL分发点(x509v3扩展)获取最新的CRL。
  2. 根据CA证书的本地副本validationCRL内容。
  3. 将新的CRL写入磁盘。
  4. 重复其他CA。
  5. 重新启动Apache。

在这种情况下,您只需要从pipe理自己的CA的客户端获得CA证书和CRL分发点。

假设您很高兴相信每个CA签名的证书,那么您应该能够使用SSLCACertificatePathSSLVerifyClient require来validation您的客户。 这意味着您无法知道何时应该拒绝吊销的证书。 Apache 2.2确实有一个SSLCARevocationPath选项,可以让你放入CRL文件。 这将需要您定期同步您的CRL文件。 更新的频率取决于同步需要多长时间,证书撤销之后多长时间,您很乐意接受。 如果同步需要比您满意的时间更长的时间,那么这种方法将无法工作。 如果你真的需要实时检查你的证书,那么你可能要等到Apache 2.4发布。

http://www.apacheweek.com/features/crl似乎提供了一些关于如何正确设置的更多细节。

关于OCSP,你需要浏览器支持吗? 据推测,如果你只是检查客户端证书是否有效,那么只有服务器需要支持OCSP。