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的環境是什麼?

有一個與以下相關的令人討厭的錯誤森托斯 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_DISABLE_HW_GCM=1”來降級NSS

# 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

相關內容