Centos7 不信任 lets crypto 颁发的证书

Centos7 不信任 lets crypto 颁发的证书

我有一台运行 https:// 的 apache nginx 服务器,该服务器已正确配置 letsencrypt 证书。我可以使用 Firefox、Chrome 等浏览器进行连接。它们均报告连接安全。然而 centos7 和 ubuntu 14.04 报告证书错误:

wget https://gitlab.timeless.cz:8443

Resolving gitlab.timeless.cz (gitlab.timeless.cz)... 82.100.8.23
Connecting to gitlab.timeless.cz (gitlab.timeless.cz)|82.100.8.23|:8443... connected.
ERROR: cannot verify gitlab.timeless.cz's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3’:
  Unable to locally verify the issuer's authority.

根据https://www.ssllabs.com/该页面是正确的。

输出

openssl s_client -connect gitlab.timeless.cz:8443

CONNECTED(00000003)
depth=0 CN = gitlab.timeless.cz
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = gitlab.timeless.cz
verify error:num=27:certificate not trusted
verify return:1
depth=0 CN = gitlab.timeless.cz
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/CN=gitlab.timeless.cz
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---

但应该是这样的,这对 wget 和 curl 有效)

CONNECTED(00000003)
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=bk1.timeless.cz
   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
---

我还有一些 apache 服务器,它们可以很好地与 lets-encrypt 证书配合使用。我的意思是对于 wget...

我不知道为什么这在浏览器中可以运行,但在命令行中却不行。

编辑:

我正在使用从 Ubuntu 上的 omnibus 包安装的 gitlab,在 http 端口 8080 和 https 8443 上运行捆绑的 nginx。它默认安装了自签名证书。

然后我安装了 apache(标准端口 80,443)并使用 letsencrypt-auto 实用程序对其进行了配置。https 运行良好,受到所有人的信任。

首先,我尝试配置 apache 以终止 https 并将流量转发到未加密的 nginx(端口 8080)。它基本上可以工作,但我在登录和 git clone 时遇到了问题。这使得它无法使用。

其次,我尝试将为 apache 生成的 lets encrypt 证书链接到 nginx,但 /etc/gitlab/ssl 中只有 .crt 和 .key 文件。所以我不知道如何包含链式证书。奇怪的是,浏览器没有它也可以正常运行,但 wget、git 和 curl 却会失败。

今天我发现

https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/apache/gitlab-omnibus-apache24.conf

并设法修复了我的第一个解决方案。这对我来说很有用,因为我可以自动更新证书,可以使用 gitlab 的标准端口,最后我可以使用一个 IP 来提供多项服务。

解决第二个方案是将链包含到 nginx 中,但是它是 giltab 捆绑的,因此正常配置不适用。

答案1

在 REDHAT 7 / CentOS 7 / Oracle Linux 7 中:

在您的环境中安装证书。

  1. 从以下位置下载活动 PEM 证书:https://letsencrypt.org/certificates/在 /etc/pki/ca-trust/source/anchors 中
  2. 执行:sudo update-ca-trust

就这样!

答案2

我最近遇到了一个问题,C7 系统无法升级某些软件包,因为远程证书不受信任。我可以使用 wget 来验证这一点。经过一番搜索和思考后,我决定重新安装 ca-certificates 软件包

yum reinstall ca-certificates

这解决了我的问题。尝试在运行 wget 的系统上重新安装 ca-certificates 包。

答案3

就像您自己的 openssl 输出一样,Web 服务器(是 apache 还是 nginx?您的问题有点不清楚)缺少中间链证书。您需要 apache 中的 SSLCertificateChainFile 配置

ssllabs 的输出是正确的,因为您正在测试端口 443,该端口可以使用 wget 或 curl 工作。您不允许在 sslabs 工具中测试 443 以外的其他端口。

相关内容