CentOS 7 - SSL証明書を受け入れない

CentOS 7 - SSL証明書を受け入れない

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

関連情報