CentOS 7 — 不接受任何 SSL 证书

CentOS 7 — 不接受任何 SSL 证书

我在 CentOS 7 机器上执行任何需要 SSL 的操作时遇到问题,包括 curl、wget 或通过 YUM 更新。

输出总是一样的:

[root@localhost ~]# curl -I -v https://google.com
* About to connect() to google.com port 443 (#0)
*   Trying 74.125.138.100...
* Connected to google.com (74.125.138.100) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Server certificate:
*       subject: CN=*.google.com,O=Google Inc,L=Mountain View,ST=California,C=US
*       start date: Jun 16 08:37:32 2016 GMT
*       expire date: Sep 08 08:29:00 2016 GMT
*       common name: *.google.com
*       issuer: CN=192.168.2.44,C=US
* NSS error -8172 (SEC_ERROR_UNTRUSTED_ISSUER)
* Peer's certificate issuer has been marked as not trusted by the user.
* Closing connection 0
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html

所有证书似乎都“标记为不受信任”(我已尝试使用十几个不同的 URL)。我尝试重新安装 CA 证书,如下所示:

yum --disablerepo="epel" reinstall ca-certificates

但这没用。有什么想法吗?

答案1

我会检查你的 nss 安装。它可能已经过期/损坏了。

检查你正在运行的版本;centos 7 上的最新版本应该是:

nss-config version
3.21.0

然后检查是否有任何 nss 包已被修改/损坏:

rpm -Vv nss-*

根据您的结果,可能需要 nss 更新或重新安装。

您可以通过临时更改该目录的权限(以 root 身份)来半确定地查看这是否是 nss 的问题:

chmod 400 /etc/pki/nssdb/*

然后以普通用户身份发出 curl 命令 - 如果它有效,它将输出如下内容:

* Connected to google.com (172.217.4.206) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
<clipped>

这表明它只是使用了 CA 证书而不是基于 nssdb 的身份验证。

如果这不是与 nss 相关的问题,那么这里有一个RHEL 指南这也适用于 CentOS,它将指导您确保拥有干净的 CA 证书配置。我不认为该链接位于他们的付费墙后面;如果您需要它但无法访问它,请告诉我。

答案2

您在什么环境下运行CentOS7?

有一个与以下相关的严重错误Centos 6.8在 (Zen) 虚拟化和/或 CPU AES 支持下的系统上更新 / NSS 3.21.0-8.el6。在 Rackspace 和 AWS t1.micro 实例上,我在 CentOS 6.8 和 NSS 更新后都遇到了这个问题。

我相信您遇到了与 Centos7 NSS 更新相关的问题。

https://www.centos.org/forums/viewtopic.php?t=58002

https://bugs.centos.org/view.php?id=10930#c26705

如何检查我的 CPU 是否支持 AES-NI? https://unix.stackexchange.com/questions/14077/how-to-check-that-aes-ni-is-supported-by-my-cpu

6.8 上有些人已经成功通过设置环境变量降级 NSS:“NSS_DISABLE_HW_GCM=1”

# NSS_DISABLE_HW_AES=1
# yum downgrade nss nss-util nss-tools nss-sysinit
# yum install yum-plugin-versionlock
# yum versionlock add! nss-3.21.0-0.3.el6_7.x86_64 nss-sysinit-3.21.0-0.3.el6_7.x86_64 nss-tools-3.21.0-0.3.el6_7.x86_64 nss-util-3.21.0-0.3.el6_7.x86_64

再次强调,以上代码适用于 6.8,而不是 CentOS 7

我发现了nss-3.21.0-0.3。el6_7.x86_64 已贬值且不可用。我已从 6.8 更新之前的映像备份重新加载了整个服务器,并且 YUM 版本锁定了 nss nss-sysinit nss-tools nss-util,然后才再次更新。

注意:我会将以上信息添加为“评论”而不是“答案”,但我的低声誉分数使我无法发表评论,我只能“回答”。

我希望这有帮助。

答案3

我也遇到过类似的问题。当然,这很可能是我自己的问题。

必须安装*nss-*

[not showing this]# nss-config version

bash: nss-config: command not found

yum install -y nss-*

Installed:
  nss-devel.x86_64 0:3.36.0-7.el7_5
  nss-pam-ldapd.x86_64 0:0.8.13-16.el7
  nss-pkcs11-devel.x86_64 0:3.36.0-7.el7_5
  nss-softokn-devel.x86_64 0:3.36.0-5.el7_5
  nss-softokn-freebl-devel.x86_64 0:3.36.0-5.el7_5
  nss-util-devel.x86_64 0:3.36.0-1.el7_5

Dependency Installed:
  nscd.x86_64 0:2.17-260.el7            nspr-devel.x86_64 0:4.19.0-1.el7_5

nss-config version

Usage: nss-config [OPTIONS] [LIBRARIES]

Options:
        [--prefix[=DIR]]
        [--exec-prefix[=DIR]]
        [--includedir[=DIR]]
        [--libdir[=DIR]]
        [--version]
        [--libs]
        [--cflags]

Dynamic Libraries:
        nss
        nssutil
        ssl
        smime

[not showing this still]# nss-config --version
3.36.0

相关内容