SSL/TLS:如何解决“链问题:包含锚点”

信息安全 tls nginx ocsp
2021-08-20 11:33:57

我刚刚在 ssllabs.com 上进行了一次快速测试:获得了 A+,对此我很高兴。

但是有一件事我不知道如何“修复”:我的网站支持 OCSP 装订,并且 ssllabs 不断告诉我:链问题:包含锚。我知道这只是一个“警告”,因为它会稍微减慢连接速度。

nginx配置:

..
ssl_certificate             public.crt;
ssl_certificate_key         private.key;
ssl_stapling                on;
ssl_stapling_verify         on;
ssl_trusted_certificate     my-chain.pem;
..

其中:
- public.crt是我从 StartSSL 获得的公共证书
- private.key证书的私钥
- my-chain.pem(ssllabs 称之为:“附加证书(如果提供)”)包括:

1.) StartCom Class 1 Primary Intermediate Server CA  
2.) StartCom Certification Authority

我发现一个站点也使用 StartCom (StartSSL) 证书,支持 OCSP 装订,但没有上述问题。

本网站的“附加证书”:

1.) StartCom Class 1 Primary Intermediate Server CA

我也尝试过:只将“StartCom Class 1 Primary Intermediate Server CA”放入 my-chain.pem。
但是 ssllabs 说:OCSP 装订:否所以这似乎完全破坏了 OCSP 装订。

任何的想法?

编辑:

终于修好了!

ssl_certificate = Site certificate + StartCom Class 1 Primary Intermediate Server CA  
ssl_trusted_certificate = StartCom Class 1 Primary Intermediate Server CA + StartCom Certification Authority
2个回答

根据nginx 文档,如果启用了 ssl_stapling并且这些证书的列表将不会发送给客户端,则该ssl_trusted_certificate参数包含用于验证客户端证书和 OCSP 响应的可信 CA 证书。

因此,我认为 ssllabs 所谓的“附加证书(如果提供)”是ssl_certificate文件中的证书,而不是服务器证书。

给我:

public.crt 应包含以下 2 个证书:

1) your server certificate
2) StartCom Class 1 Primary Intermediate Server CA 

my-chain.pem 应包含以下 2 个证书:

1) StartCom Class 1 Primary Intermediate Server CA // required to validate the server certificate OCSP response 
2) StartCom Certification Authority  // required to validate the intermediate CA certificate OCSP response 

现在,您有一个引用的站点证书ssl_certificate和一个包含中间证书和引用的 CA 证书的文件ssl_trusted_certificate

相反,您应该做的是,拥有一个包含站点证书和中间证书的文件,ssl_certificate并且只有 CA 证书引用ssl_trusted_certificate

IE:

public.crt应包含:

1) your site's cert, issued by StartCom
2) StartCom Class 1 Primary Intermediate Server CA 

my-chain.pem应该包含:

1) StartCom Certification Authority

是的,这与 Apache 做事的方式相反。但是 nginx != apache。