Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

システムを Red Hat Subscription Management (RHSM) に登録できない:「SSLError: certificate verify failed」のエラーメッセージが表示される

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 5.7 以降
  • Red Hat Subscription Manager (RHSM)

Issue

  • システムを Red Hat Subscription Management (RHSM) に登録できません:「SSLError: certificate verify failed」のエラーメッセージが表示されます。
  • システムを RHSM に登録する際に、SSLError: certificate verify failed のエラーメッセージが表示されます。

Resolution

注記: 以下の手順では、root としてサインインし、コマンドプロンプトを使用する必要があります。GUI インターフェースで起動している場合は、システムメニューからターミナルアプリケーションを選択し、コマンドプロンプトにアクセスします。

基本的なテスト

以下の各トラブルシューティングステップの前および各ステップの間に、以下の openssl および curl コマンドを使用して、SSL による基本的な接続性を確認できます。openssl コマンドについては、確認後に Control+C を使用して接続を閉じます。

# openssl s_client -connect subscription.rhn.redhat.com:443 -CAfile /etc/rhsm/ca/redhat-uep.pem
# curl -v -u [rhnusername] --cacert /etc/rhsm/ca/redhat-uep.pem https://subscription.rhn.redhat.com/subscription/users/[rhnusername]/owners

or

# openssl s_client -connect subscription.rhsm.redhat.com:443 -CAfile /etc/rhsm/ca/redhat-uep.pem
# curl -v -u [rhnusername] --cacert /etc/rhsm/ca/redhat-uep.pem https://subscription.rhsm.redhat.com/subscription/users/[rhnusername]/owners

1. ファイアウォールルール (iptables または firewalld) の確認

Red Hat のサイトへのアクセスをブロックする、またはポート 443 経由のトラフィックを許可しない内部ファイアウォールルールがないか確認します。これがファイアウォールの問題かどうかを簡単に判断するには、iptables サービスを無効にします。

RHEL5 and RHEL6
# service iptables stop

RHEL7:
# systemctl stop firewalld

無効にした後に subscription-manager register コマンドが機能する場合は、ファイアウォール設定を更新して、ポート 443 経由の TCP トラフィックを許可する必要があります。以下のソリューションで詳細を確認してください。
ファイアウォールまたはプロキシーから Red Hat Subscription Manager (RHSM) にアクセスする

RHSM では、以下のインターネットリソースとのポート 443 を経由した TCP トラフィックを許可する必要があります。

  • 登録時 (RHSM、subscription-manager): subscription.rhn.redhat.com または subscription.rhsm.redhat.com
  • 更新時 (yum): cdn.redhat.com

2. システムの時刻設定の確認

SSL は、適切な日時範囲に依存します。システムの時刻と日付が正しいことを確認します。

# grep ZONE /etc/sysconfig/clock
The time should match between the TZ time and the current date/time
# date
RHEL5 and RHEL6:
# ntpq -p

RHEL7:
# chronyc sources
or
# chronyc tracking
(To check for any jitter)

3. イントラネットおよびプロキシー設定の確認

ローカルネットワークに、接続に必要なルートと SSL プロキシールールがあることを確認します。

4. HTTPS 検査が実行されているかどうかをファイアウォール/プロキシー管理者に確認

ファイアウォール/プロキシーによる HTTPS 検査は、subscription-manager でのこのような問題の原因となることが知られています。 SSL 通信を再署名も同様です (中間者攻撃に類似)。
RHSM のファイアウォール/プロキシーに関する問題のトラブルシューティングの詳細手順は、こちら および こちら を参照してください。

5. ルート証明書の再インストール

システムに python-rhsm パッケージを再インストールして、ルート証明書を再インストールできます。登録が正常に実行されるまで更新をオフラインで行う必要があるため、以下の操作を実行できます。

  • カスタマーポータルのパッケージのダウンロードページ (https://access.redhat.com/downloads/content/package-browser) で python-rhsm を検索してダウンロードします。

  • RPM パッケージファイルを RHEL サーバーにコピーします。

  • 以下のソリューションに記載のように、rpm を使用してパッケージをインストールします。
    How to install or upgrade an RPM package?

注記
rhel 6 以降を実行している別のサーバーがある場合は、yumdownloader を使用することができます。
その前に、Red Hat 6 を実行している類似のシステムで yumdownloader コマンドを実行します。
以下の例には特定のバージョンが示されていますが、パッケージ番号は時間の経過と共に増える場合があります。

# mkdir /tmp/python-rhsm;cd /tmp/python-rhsm
# yumdownloader --resolve subscription-manager\*

Then scp the folder 
tar -czvf /tmp/python-rhsm/python-rhsm.tar.gz /tmp/python-rhsm
scp /tmp/python-rhsm.tar.gz root@xxx.xxx.xxx.xxx:/tmp/

サーバーにログインし、python-rhsm パッケージを削除します。

# yum remove python-rhsm
# ls -la /tmp/python-rhsm.tar.gz
# mkdir -p /tmp/python-rhsm
# tar -zxvf python-rhsm.tar.gz
cd into this directory 
# yum install python-rhsm-1.14.3-1.el6.x86_64 subscription-manager-1.14.10-1.el6.x86_64.rpm subscription-manager-firstboot-1.14.10-1.el6.x86_64.rpm subscription-manager-gui-1.14.10-1.el6.x86_64.rpm

Root Cause

  • SSL の障害は、証明書失敗の原因となるシステム間に存在するファイアウォールや、該当するシステムの時刻設定が正しくないことなど、さまざまな問題によって引き起こされる可能性があります。
  • たとえば、HTTPS の検査を実施するファイアウォールが原因で、subscription-manager での証明書の検証に失敗する可能性があります。 その場合は、ファイアウォールを確認し、RHSM クライアントの https の検査を無効にします。

Diagnostic Steps

  • OpenSSL テストの結果:
# openssl s_client -connect xmlrpc.rhn.redhat.com:443 -CAfile /usr/share/rhn/RHNS-CA-CERT
CONNECTED(00000003)
139883445217096:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 309 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
  • curl コマンドの結果:
# curl -v -u rhnusername --cacert /etc/rhsm/ca/redhat-uep.pem https://subscription.rhn.redhat.com/subscription/users/rhnusername/owners
Enter host password for user 'rhnusername':
* About to connect() to subscription.rhn.redhat.com port 443 (#0)
*   Trying 209.132.183.49... connected
* Connected to subscription.rhn.redhat.com (209.132.183.49) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/rhsm/ca/redhat-uep.pem
  CApath: none
* Issuer certificate is invalid: 'E=ca-support@redhat.com,CN=subscription.rhn.redhat.com,OU=Red Hat Network,O="Red Hat, Inc.",ST=North Carolina,C=US'
* NSS error -8156
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html
...
  • /var/log/rhsm/rhsm.log のログ
        2011-12-27 08:41:07,641 [INFO]  @connection.py:350 - Using certificate authentication: key = /etc/pki/consumer/key.pem, cert = /etc/pki/consumer/cert.pem, ca = /etc/rhsm/ca/, insecure = False
        2011-12-27 08:41:07,641 [DEBUG] @connection.py:188 - Loading CA PEM certificates from: /etc/rhsm/ca/
        2011-12-27 08:41:07,641 [DEBUG] @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/redhat-uep.pem'
        2011-12-27 08:41:07,642 [DEBUG] @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/candlepin-stage.pem'
        2011-12-27 08:41:07,642 [WARNING]  @connection.py:383 - Error fetching supported resources, this UEPConnection is likely not usable:
        2011-12-27 08:41:07,642 [ERROR]  @connection.py:385 - No such file or directory
        Traceback (most recent call last):
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 376, in _load_supported_resources
            resources_list = self.conn.request_get("/")
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 252, in request_get
            return self._request("GET", method)
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 191, in _request
            context.load_cert(self.cert_file, keyfile=self.key_file)
          File "/usr/lib64/python2.6/site-packages/M2Crypto/SSL/Context.py", line 76, in load_cert
            m2.ssl_ctx_use_cert(self.ctx, certfile)
        SSLError: No such file or directory
        2011-12-27 08:41:07,643 [INFO]  @connection.py:362 - Connection Established: host: subscription.rhn.redhat.com, port: 443, handler: /subscription
        2011-12-27 08:41:11,713 [INFO]  @connection.py:339 - Using basic authentication as: isavia_sysdep
        2011-12-27 08:41:11,713 [DEBUG]  @connection.py:188 - Loading CA PEM certificates from: /etc/rhsm/ca/
        2011-12-27 08:41:11,713 [DEBUG]  @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/redhat-uep.pem'
        2011-12-27 08:41:11,714 [DEBUG]  @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/candlepin-stage.pem'
        2011-12-27 08:41:11,714 [DEBUG]  @connection.py:209 - Making request: GET /subscription/
        2011-12-27 08:41:12,456 [WARNING]  @connection.py:383 - Error fetching supported resources, this UEPConnection is likely not usable:
        2011-12-27 08:41:12,456 [ERROR]  @connection.py:385 - certificate verify failed
        Traceback (most recent call last):
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 376, in _load_supported_resources
            resources_list = self.conn.request_get("/")
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 252, in request_get
            return self._request("GET", method)
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 212, in _request
            conn.request(request_type, handler, body=body, headers=headers)
          File "/usr/lib64/python2.6/httplib.py", line 914, in request
            self._send_request(method, url, body, headers)
          File "/usr/lib64/python2.6/httplib.py", line 951, in _send_request
            self.endheaders()
          File "/usr/lib64/python2.6/httplib.py", line 908, in endheaders
            self._send_output()
          File "/usr/lib64/python2.6/httplib.py", line 780, in _send_output
            self.send(msg)
          File "/usr/lib64/python2.6/httplib.py", line 739, in send
            self.connect()
          File "/usr/lib64/python2.6/site-packages/M2Crypto/httpslib.py", line 50, in connect
            self.sock.connect((self.host, self.port))
          File "/usr/lib64/python2.6/site-packages/M2Crypto/SSL/Connection.py", line 185, in connect
            ret = self.connect_ssl()
          File "/usr/lib64/python2.6/site-packages/M2Crypto/SSL/Connection.py", line 178, in connect_ssl
            return m2.ssl_connect(self.ssl, self._timeout)
        SSLError: certificate verify failed
        2011-12-27 08:41:12,457 [INFO]  @connection.py:362 - Connection Established: host: subscription.rhn.redhat.com, port: 443, handler: /subscription
        2011-12-27 08:41:12,458 [DEBUG]  @connection.py:188 - Loading CA PEM certificates from: /etc/rhsm/ca/
        2011-12-27 08:41:12,459 [DEBUG]  @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/redhat-uep.pem'
        2011-12-27 08:41:12,459 [DEBUG]  @connection.py:171 - Loading CA certificate: '/etc/rhsm/ca/candlepin-stage.pem'
        2011-12-27 08:41:12,460 [DEBUG]  @connection.py:209 - Making request: GET /subscription/users/isavia_sysdep/owners
        2011-12-27 08:41:13,104 [ERROR]  @managercli.py:65 - Error during registration: certificate verify failed
        2011-12-27 08:41:13,104 [ERROR]  @managercli.py:66 - certificate verify failed
        Traceback (most recent call last):
          File "/usr/share/rhsm/subscription_manager/managercli.py", line 600, in _do_command
            owner_key = self._determine_owner_key(admin_cp)
          File "/usr/share/rhsm/subscription_manager/managercli.py", line 678, in _determine_owner_key
            owners = cp.getOwnerList(self.username)
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 488, in getOwnerList
            return self.conn.request_get(method)
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 252, in request_get
            return self._request("GET", method)
          File "/usr/lib/python2.6/site-packages/rhsm/connection.py", line 212, in _request
            conn.request(request_type, handler, body=body, headers=headers)
          File "/usr/lib64/python2.6/httplib.py", line 914, in request
            self._send_request(method, url, body, headers)
          File "/usr/lib64/python2.6/httplib.py", line 951, in _send_request
            self.endheaders()
          File "/usr/lib64/python2.6/httplib.py", line 908, in endheaders
            self._send_output()
          File "/usr/lib64/python2.6/httplib.py", line 780, in _send_output
            self.send(msg)
          File "/usr/lib64/python2.6/httplib.py", line 739, in send
            self.connect()
          File "/usr/lib64/python2.6/site-packages/M2Crypto/httpslib.py", line 50, in connect
            self.sock.connect((self.host, self.port))
          File "/usr/lib64/python2.6/site-packages/M2Crypto/SSL/Connection.py", line 185, in connect
            ret = self.connect_ssl()
          File "/usr/lib64/python2.6/site-packages/M2Crypto/SSL/Connection.py", line 178, in connect_ssl
            return m2.ssl_connect(self.ssl, self._timeout)
        SSLError: certificate verify failed
  • 以下の原因となるローカルにインストールされている証明書がないことを確認します。
# certutil -L -d sql:/etc/pki/nssdb/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments