多个 SSL 证书包?

Multiple SSL Cert Bundles?

我公司想为我们的网站使用两种不同类型的 SSL 证书:一种使用 RSA,一种使用 ECDSA。原因是因为使用我们网站的外部服务使用的代码非常旧,所以我们需要两者都具有兼容性。

编辑:我们使用的是 Apache 2.4,两个证书都来自同一机构。因此,下面的根 CA 是相同的,但由于 RSA/ECDSA 差异,中间体不同。

我们的 Apache 配置如下:

### RSA cert
SSLCertificateFile          /etc/ssl/certs/website_com_rsa.crt
SSLCertificateKeyFile       /etc/ssl/private/website_com_rsa.key

### ECDSA cert for compatibility
SSLCertificateFile          /etc/ssl/certs/website_com_ecdsa.crt
SSLCertificateKeyFile       /etc/ssl/private/website_com_ecdsa.key

### RSA/ECDSA cert bundle
SSLCertificateChainFile /etc/ssl/certs/website_com.ca-bundle

我不确定的部分是 CA 捆绑包。我的问题是:

  1. 我可以使用两种不同的 SSLCertificateChainFile 指令,每种指令一种(RSA 和 ECDSA)吗?
  2. 如果我不能,那么如何将来自两个不同证书包的 CA 包合并到一个文件中?假设我有两个 CA 捆绑文件,它们的顺序如下:

RSA 捆绑包

-----BEGIN CERTIFICATE-----
...
<rsa-intermediate-1>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<rsa-intermediate-2>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<root-ca>
...
-----END CERTIFICATE-----

ECDSA 捆绑包

-----BEGIN CERTIFICATE-----
...
<ecdsa-intermediate-1>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<ecdsa-intermediate-2>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<root-ca>
...
-----END CERTIFICATE-----

它们应该按什么顺序组合?

Apache 2.4 docs for SSLCertificateChainFile 开始,您似乎会在配置为 SSLCertificateFile 的文件中提供单独的链, 将服务器证书与其证书相结合相应的证书链,在同一个文件中。

例如,您的 /etc/ssl/certs/website_com_rsa.crt 可能包含 多个 证书,从服务器证书到根:

-----BEGIN CERTIFICATE-----
...
<website-com-rsa>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<rsa-intermediate-1>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<rsa-intermediate-2>
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
<root-ca>
...
-----END CERTIFICATE-----

您的 /etc/ssl/certs/website_com_ecdsa.crt 文件也是如此。这意味着 而不是 使用 SSLCertificateChainFile.

希望对您有所帮助!