SSL 实验室:顺序错误、额外证书

Joh*_*all 1 ssl lets-encrypt

当我测试网站的 SSL 时,我收到来自https://www.ssllabs.com/ssltest/analyze.html?d=api.quotecrunchers.com的错误“链问题:顺序错误,额外证书” 。

我使用以下命令将 https 机制构建到 Spring Boot 应用程序中:

  1. 用于与 Let's Encrypt CA 通信的 acme4j 库。

  2. 用于将 Let's Encrypt 证书写入 java 密钥库的 Java 代码。

  3. Java 代码使嵌入式 Tomcat 服务器通过 HTTP 从 Let's Encrypt 申请证书,然后在获得证书后重新使用 HTTPS。

我计划在整理完该代码后将其开源。

但目前,我仅使用 ssllabs.com 获得了 B 评级

请参阅https://www.ssllabs.com/ssltest/analyze.html?d=api.quotecrunchers.com

我的 https 有几个问题,但我关心的问题是“链问题:顺序错误,额外的证书”

为什么我会得到这个,我应该做什么?

任何帮助是极大的赞赏!

Pat*_*zek 5

当有人连接到您的站点时,以下是它发送的内容,如下所示openssl s_client

Certificate chain
 0 s:/CN=api.quotecrunchers.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/CN=api.quotecrunchers.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 2 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,第一个证书是重复的,这正是评级和错误消息的原因。

当您配置 TLS 服务器时,您通常会在一端指定端(服务器)证书,即一个证书,并且它将出现0在如上所述的跟踪中的位置,然后您(可选,但非常频繁)提供一个潜在列表链式证书(称为“中间”)将您的最终证书链接到某个根 (CA) 证书,CA 证书本身可能是链中的最后一个证书或完全被跳过。

1它本来就在上面的轨迹中就位并稍后出现。

但正如您所看到的,在位置1,因此作为中间证书,我们再次找到您的最终证书。

根据 TLS 标准,这是不正确的,因此您需要更改您的配置或包含中间证书的文件,以从该位置删除您的最终证书,以便您最终能够获得:

Certificate chain
 0 s:/CN=api.quotecrunchers.com
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
Run Code Online (Sandbox Code Playgroud)