監査ログにはさまざまな根本原因を示す証明書エラーのバリエーションがあります。この記事では、これらのエラーを調べ、根本原因を調べ、解決する方法を説明します。ご使用の環境で次のいずれかの解決策が機能しない場合は、新しいサポートケースを開いてください。
Release:
Component:APIGTW
◆エラーとその対応方法
証明書が確認されません
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Certificate not verified.
これは、APIGatewayがリモートシステムとの信頼関係を確立できなかったことを示します。これは、API Gatewayが発行された証明書を暗黙的に信頼しないか、証明書の発行者を信頼しないためです。この問題を解決するには:
1. リモートサービスの証明書またはその証明書の発行者がtask -> [Manage Certificates]に追加されていることを確認します。追加されていない場合は、マニュアル - [証明書の管理]:[新しい証明書の追加]を参照してください。
2. リモートサービスの証明書またはその証明書の発行者がAPI Gatewayで取り消されていないことを確認します。
致命的な警告:不正な証明書
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Fatal Alert received: Bad Certificate
これは、API Gatewayの証明書がリモートシステムによって拒否されたことを示します。これは、リモートシステムがAPI GatewayまたはAPIGatewayの証明書の発行者によって提示された証明書を信頼しないためです。この問題を解決するには:
1. API Gatewayの証明書または前記証明書の発行者がリモートシステムによって信頼されていることを確認します。このプロセスは、連絡先のエンドポイントによって異なります。
2. API Gatewayの証明書またはその証明書の発行者がリモートシステムによって取り消されていないことを確認します。このプロセスは、連絡先のエンドポイントによって異なります。
ホスト名が一致しません
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Host name does not match certificate '<hostname>.<yourdomain>.com'.
これは、API Gatewayが、リモートシステムによって提示された証明書のCN値を、連絡先のリモートシステムのホスト名に一致させることができなかったことを示します。提示されている証明書のCN値が、連絡先のシステムのホスト名と一致しない場合、このエラーが発生します。これを解決するには:
1. cluster-wide property のio.httpsHostVerifyをfalseに設定します。
この問題は、権限によって発行された証明書がワイルドカード証明書であるためにも発生する可能性があります。これは、複数の個々のホストに対して有効であり、単一のホストに固有ではないことを意味します。既定では、API Gatewayは最も信頼性の低い動作を行います。ホスト名のワイルドカード値を信頼することはデフォルトの動作ではなく、管理者が有効にする必要があります。これを解決するには:
1. cluster-wide property のio.httpsHostAllowWildcardをtrueに設定します。
API Gateway "cluster-wide property"の追加または更新の詳細については、マニュアル - [クラスタ全体のプロパティの管理]を参照してください。
証明書パスの検証および/または失効確認に失敗しました
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Certificate not verified. Caused by: Certificate path validation and/or revocation checking failed
これは、明示的に信頼されていないため、API Gatewayがリモートシステムによって提示された証明書を拒否したことを示します。これは、発行者の信頼チェーンを検証する場合、または証明書または権限が明示的に取り消された場合など、証明書の検証プロセスに失敗したためです。通常、これは、API Gatewayが、自己署名していないリモートシステムによって提示された証明書の信頼チェーンに完全に従うことができないために発生します。この問題を解決するには:
1. 仲介および/またはルート証明機関の証明書が[証明書の管理]ダイアログボックスに保存されていることを確認します。
2. 上記の証明書がクライアント証明書に署名するために信頼され、ルートCAの証明書が信頼のアンカーとして機能するように構成されていることを確認します。
信頼できる発行者としての証明書のインポートの詳細については、ここのリンクを参照してください。Creating signed certificate for Federated Identity Providers.
CA証明書が見つかりましたが信頼できません
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Certificate not verified. Caused by: CA Cert(s) with DN 'cn=ca.<yourdomain>.com' found but not trusted for signing SSL Server Certs.
これは、API Gatewayがエンドポイントから返された証明書の信頼チェーン内にCA証明書があるが、CA証明書がクライアント証明書を発行するために明示的または暗黙的に信頼されていないことを示します。この問題を解決するには:
1. 中間証明書およびルートCA証明書の1つまたはすべてをtask -> [Manage Certificates]にインポートします。
2. アウトバウンドSSL接続が有効なオプションとして設定されていることを確認します。
API Gatewayの証明書トラストストアに証明書を追加する方法の詳細については、マニュアル - [証明書の管理]:[新しい証明書の追加]を参照してください。
サーバー証明書が見つかりましたが、SSLに対して信頼されていません
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service: Certificate not verified. Caused by: Server cert 'cn=system.<yourdomain>.com' found but not trusted for SSL.
これは、API Gatewayがリモートシステムによって提示された証明書を拒否していることを示します。その証明書チェーンの一部またはその信頼チェーンはSSL通信用に特に信頼されていないためです。この問題を解決するには:
1. 中間証明書およびルートCA証明書の1つまたはすべてを「証明書の管理」タスクにインポートします。
2. アウトバウンドSSL接続の署名証明書が有効なオプションとして設定されていることを確認します。
3. 署名付きクライアント証明書が有効なオプションとして設定されていることを確認します。
また、このエラーは、証明書管理ストアに格納されている証明書とサーバーによって提供されている証明書との間に矛盾があるために発生する可能性があります。信頼ストアに格納されている証明書の識別名がサーバーで使用されている証明書の識別名と一致するが、証明書自体が一致しない場合、このエラーが発生します。この問題を解決するには:
1. Manage Certificatesトラストストアに格納されている証明書をエクスポートします。
2. 適切なサーバーから証明書をエクスポートします。
3. 違いを比較してください。
具体的には、各証明書の法と拇印の値に違いが見られる可能性があります。これらの値が異なる場合、証明書は異なります。これが問題の核心です。証明書は異なりますが、識別名は同じです。これにより、証明書が(ログエントリで示されているように)見つかりますが、既存の証明書には一致しません。
API Gatewayの証明書トラストストアに証明書を追加する方法の詳細については、マニュアル - [証明書の管理]:[新しい証明書の追加]を参照してください。
受信したレコードのプロトコルのメジャーバージョンが正しくありません
エラーは次のように表示されます。
Unable to obtain http response from https://<hostname>.<yourdomain>.com/path/to/remote/service?wsdl: Received record has incorrect protocol major Version.
これは、API Gatewayがリモートシステムへの送信SSL接続を試行しており、API Gatewayが接続の使用に許可されているSSL/TLSバージョンを見つけることができなかったことを示します。
不明なCA
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service?wsdl: Received fatal alert: unknown_ca
このエラーは、SSLを介したクライアント相互認証のネゴシエート時に発生し、リモートシステムがAPIGatewayが提示している証明書のCAまたは発行者を信頼しない場合に発生します。相互認証が初期化されるとき、各側はトランザクションに許可された信頼できるCAを要求します。APIゲートウェイによって提示された証明書の発行者がリモートシステムによって信頼されていない場合、接続は失敗します。この問題を解決するには:
1. 発行機関の証明書をPEMエンコード形式でワークステーションに保存します。
2. クラスタ全体のプロパティの管理で、「io.httpsAcceptedClientCa」プロパティを追加します。
3. CAのPEMでエンコードされた証明書を、BEGIN CERTIFICATEおよびEND CERTIFICATE行を含むクラスタプロパティに追加します
4. API Gateway(SSG)サービスを再開する
API Gateway "cluster-wide property"の追加または更新の詳細については、マニュアル - [クラスタ全体のプロパティの管理]を参照してください。
証明書がAPIゲートウェイに提示されない
エラーは次のように表示されます。
No Client Certificate was present in the request
このエラーは、SSL/TLSを使用していてクライアント証明書を必要とするが、何も表示されない場合に発生します。クライアントが、SSLハンドシェーク中にAPI Gateway上で受け入れ可能なCAのリストをACKで受信していないためです。これは、標準ごとのTLS 1.0の予想される動作です。この問題を解決するには:
1. 使用されているリスンポートでTLS 1.1を切り替えることができます。これにより、APIゲートウェイは、TLS 1.1標準に従ってハンドシェイク中にCAリストを提示します。TLS 1.1を有効にすると、単にこのリストを有効にしてからさらに影響が出る可能性があります。そのため、前進する前に下位環境でテストすることをお勧めします。
2. 信頼できるCAを追加して、クラスタ全体のプロパティの管理で "io.httpsAcceptedClientCa"プロパティを追加します。このリストを埋め込むと、TLSのプロトコルバージョンに関係なく、APIゲートウェイが信頼できるCAリストを送信します。
3. この問題を解決するには、リスンポートのAdvanced Propertiesに "acceptedIssuers"を追加し値を"true"に設定することもできます。これにより、有効になっているTLSのプロトコルバージョンに関係なく、APIゲートウェイがこの一覧を表示するようになります。
アクティブなリスンポートのTLS設定の詳細については、マニュアル - [リスンポートの管理]を参照してください。
API Gateway "cluster-wide property"の追加または更新の詳細については、マニュアル - [クラスタ全体のプロパティの管理]を参照してください。
不明な証明書
エラーは次のように表示されます。
Unable to obtain HTTP response from https://<hostname>.<yourdomain>.com/path/to/remote/service?wsdl: Received fatal alert: Certificate Unknown
このエラーは、SSL/TLSを使用して保護されたサービスと通信し、保護されたサービスがAPI Gatewayからクライアント証明書を要求している場合に発生します。このエラーは、保護されたサービスがAPI Gatewayによって提供された証明書を完全に拒否した場合に表示されます。この場合、保護されたサービスへのAPIGatewayによって提供された証明書は信頼されていないか、API Gatewayの証明書の発行元が信頼できません。このエラーを解決するには:
1. 保護されたサービスまたはアプリケーションがAPI Gatewayの証明書を信頼するように構成する
2. 保護されたサービスまたはアプリケーションがAPI Gatewayの証明書の発行者を信頼するように構成する
3. 保護されたサービスまたはアプリケーションでクライアント証明書認証を無効にする。
SSL検証に失敗しました!
ssgログからのエラーは次のようになります。
Problem routing to https://backendurl. Error msg: Unable to obtain HTTP response from https://backendurl: SSL verification failed! Request routing failed with status 601 (Error in Assertion Processing)
このエラーは、バックエンド証明書にcn名にワイルドカードが含まれている場合に発生します。デフォルトでは、ゲートウェイはそれらを信頼しません。io.httpsHostAllowWildcardクラスタプロパティーをtrueに設定するとワイルドカード文字「*」が許可されます
000042945
この情報は、サポートオンラインに掲載されている以下のナレッジベースを翻訳したものです。
Article Id: 42945- Certificate-Related Errors in Audits and Logs of the CA API Gateway