如何为双栈 RSA + ECC 证书构建 OCSP 证书链

如何为双栈 RSA + ECC 证书构建 OCSP 证书链

Nginx 允许我们使用多个证书,以便我们可以同时使用 ECC 和 RSA 证书

ssl_certificate /etc/ssl/example.com.combined.crt;
ssl_certificate_key /etc/ssl/example.com.key;
ssl_certificate /etc/ssl/example.com-ecc.combined.crt;
ssl_certificate_key /etc/ssl/example.com-ecc.key;

但是,它只允许我们指定一个用于 OCSP 装订的受信任证书:

ssl_trusted_certificate /etc/ssl/ocsp-bundle-rsa-ecc.crt;

显然,我们需要为它提供中间证书链和根证书链,但我找不到任何文档表明它是否受支持,或者这些证书应该按照什么顺序排列,即是否应该是:

  • 中间1
  • 根1
  • 中间体2
  • 根2

或者

  • 中间1
  • 中间体2
  • 根1
  • 根2

或者,如果他们需要共享一个根(一些 ECC 证书是使用 RSA 根签名的):

  • 中间1
  • 中间体2

或者简单地说,在 nginx 中是否无法使用双格式证书进行 OCSP。

这个证书包应该如何构建?

答案1

我做了一个快速的研究,这似乎是对“你不构建它”这个问题最简单的回答,它就能起作用:)

OSCP 装订可能工作正常没有 ssl_trusted certificate只要..

  • 您的操作系统信任的根 CA 存储是最新的(ca-certificates以 RedHat 为例)
  • 你有ssl_stapling on;并且ssl_stapling_verify on;
  • 您的每个证书(基于 ECC 和 RSA)都包含除根 CA 之外的完整链

nginx 文档明确指出只有......

如果 ssl_certificate 文件不包含中间证书,则服务器证书颁发者的证书应存在于 ssl_trusted_certificate 文件中

您实际上可以在 SSL 实验室测试中检查您的内容以确认这一点 - OSCP 装订在没有的情况下确实可以正常工作ssl_trusted_certificate

因此,如果您只是确保将证书本身及其中间证书放在定义的文件中ssl_certificate并在系统中拥有最新的根 CA 的最佳实践,那么双重证书就可以具有有效的 OSCP。

相关内容