Warning message

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

Redhat Subscription Management (RHSM) にシステムを登録できず "SSLError: certificate verify failed" エラーになる

Solution Verified - Updated -

Environment

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

Issue

  • Redhat 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

1. ファイアウォールルール (iptables) を確認する

社内ファイアウォールルールで、Red Hat サイトへのアクセスをブロックし、ポート 443 へのトラフィックを拒否していないかを確認します。この問題がファイアウォールの設定に起因しているかどうかを簡単に特定するには、iptables サービスを無効にします。

# service iptables stop

この後に subscription-manager による登録ができるようになったら、ポート 443 で TCP トラフィックを許可するようにファイアウォール設定をアップデートする必要があります。詳細については、以下のナレッジを参照してください。
How do I access RHSM (yum/up2date) through a firewall?

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

  • 登録の場合 (RHSM, subscription-manager): subscription.rhn.redhat.com
  • アップデートの場合 (yum): cdn.redhat.com

2. システムの時間設定を確認する

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

3. イントラネットおよびプロキシ設定を確認する

ローカルネットワークに、接続に必要なルートと SSL プロキシルールが設定されていることを確認してください。

4. HTTPS 検査が実行されたかどうかをファイアウォールまたはプロキシ管理者に問い合わせる

ファイアウォールまたはプロキシによる HTTPS 検査が原因で subscription-manager でこのような問題が発生します。(中間者攻撃のように) SSL 接続を再度署名していることが原因です。
RHSM のファイアウォールまたはプロキシ問題のトラブルシューティングについては、こちらのナレッジこちらのナレッジを参照してください。

5. root の証明書を再インストールする

システムに python-rhsm パッケージを再インストールすると、root 証明書を再インストールできます。登録が成功するまでアップデートはオフラインになっているため、以下の方法で再インストールします。

  • カスタマーポータルのパッケージダウンロードページ (https://rhn.redhat.com/rhn/channels/software/Search.do) で python-rhsm を検索してダウンロードします。

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

  • 以下を参照し、rpm を使用してパッケージをインストールします。
    How do I install or upgrade an RPM package?

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 8: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 8: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.