CentOS 7 ボックスで、curl、wget、YUM 経由の更新など、SSL を必要とする操作を実行すると問題が発生します。
出力は常に同じです:
[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
すべての証明書が「信頼されていないとマークされている」ようです (12 個の異なる 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>
これは、NSSDB ベースの認証ではなく、CA 証明書のみが使用されたことを示しています。
これが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
繰り返しますが、上記のコードは CentOS 7 ではなく 6.8 用です。
nss-3.21.0-0.3 を見つけました。エル6_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