openssl 在 GeoTrust Global CA 验证中出错,但 ssllabs.com 将该网站标记为 A+

openssl 在 GeoTrust Global CA 验证中出错,但 ssllabs.com 将该网站标记为 A+

从我的docker镜像中:

FROM ruby:2.7

RUN apt-get update && apt-get install -y libicu-dev default-libmysqlclient-dev curl jq poppler-utils ghostscript vim-tiny zip ffmpeg

ARG GITHUB_ACCESS_TOKEN=wrong
ARG TOC_RELEASE=latest
ARG COMMIT_SHA=unknown

# Force UTF-8 encoding (default is POSIX/ASCII)
ENV LANG C.UTF-8

RUN apt-get update -q && \
    apt-get install -q -y --no-install-recommends \
      ca-certificates curl unzip default-jre-headless && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

如果我尝试连接,reportingitc-reporter-sh-mdn.apple.com:443我会收到以下错误:

# openssl s_client -showcerts -connect reportingitc-reporter-sh-mdn.apple.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=19:self signed certificate in certificate chain
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 CN = Apple IST CA 2 - G1, OU = Certification Authority, O = Apple Inc., C = US
verify return:1
depth=0 CN = reportingitc-reporter.apple.com, OU = management:idms.group.135879, O = Apple Inc., ST = California, C = US
verify return:1

如果我使用 ssllabs 验证网站https://www.ssllabs.com/ssltest/analyze.html?d=reportingitc-reporter-sh-mdn.apple.com它表明该证书有效。

ssllabs 结果

如果我在 docker image ssl certs 中手动添加证书,它就会停止抱怨:

RUN curl --max-time 300 --retry 5 --retry-delay 1 --retry-max-time 900 --silent -o /usr/local/share/ca-certificates/geotrust.crt https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.pem
RUN update-ca-certificates

我不明白为什么我突然必须这样做以及为什么 ssllabs 对此没有抱怨?

答案1

即使您已将 CA 证书包(ca-certificates)添加到您的 docker 镜像中,但 GeoTrust Global CA 根证书似乎并未包含在该包中。

当您最初运行时,openssl s_client客户端会从 Apple 网站下载证书链,并发现最后一个证书是自签名的(由于某种原因,Apple 管理员决定将其作为链的一部分),但由于它不在其信任锚存储中,因此它会抱怨error:num=19:self signed certificate in certificate chain

添加根 CA 证书后运行命令时,从 Apple 网站下载的链以其现在信任的证书结尾,因此没有任何抱怨。

至于证书丢失的原因 - 您需要向为您提供 docker 映像的人提出这个问题。它位于当前的完整 Debian 10.4 发行版上,也位于当前的 Alpine 发行版上,这两个发行版都受 docker 的欢迎。正如您所说,SSL Labs 也了解它。如果让我猜的话,我会说底层的基本 docker 映像相当旧。

答案2

Debian 似乎最近取消了对 GeoTrust Global CA 的信任。请参阅http://metadata.ftp-master.debian.org/changelogs/main/c/ca-certificates/unstable_changelog

我猜测更新到最新安全更新的 Docker 镜像不会信任该网站。

我认为,对该 CA 的信任被错误地删除了。我已联系 ca-certificates 软件包维护者询问此事。

有关的:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962596

相关内容