502 Bad Gateway - 自己署名証明書のチェーン

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

<ph type="x-smartling-placeholder">

症状

クライアント アプリケーションが、メッセージを含む HTTP レスポンス コード 502 を受け取ります。 Edge Appliance の API 呼び出しに対するレスポンスとしての Bad Gateway

または、次のコマンドを実行して self signed certificate in certificate chain エラーを表示します。 <ph type="x-smartling-placeholder"></ph> edgemicro configure コマンドを使用します。

エラー メッセージ

クライアントには、次のレスポンス メッセージが表示されます。

HTTP/1.1 502 Bad Gateway

エラー レスポンスの一般的な 2 つの例は次のとおりです。

{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}

または、edgemicro configure の実行時に次のエラーが発生することがあります。

{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }

考えられる原因

原因 説明 トラブルシューティングの実施対象
<ph type="x-smartling-placeholder"></ph> ターゲット サーバーが自己署名証明書を提示する Edge AppSheet は、ターゲット サーバーの証明書を検証し、信頼されていない場合には、その証明書を ランタイム エラーが発生します。 Edge Public Cloud ユーザーと Edge Private Cloud ユーザー
Apigee Edge Management Server が自己署名証明書を使用する Edge Appliance を初めて構成するときは、次の接続手段で Apigee Edge に接続します。 ブートストラップには TLS が必要です。Edge が自己署名証明書を提示した場合、失敗します。 Edge Private Cloud ユーザー

原因: ターゲット サーバーが自己署名証明書を提示する

<ph type="x-smartling-placeholder">

<ph type="x-smartling-placeholder"></ph> 自己署名証明書が、ターゲット サーバーの <ph type="x-smartling-placeholder"></ph> 上り(内向き)接続である場合、デフォルトでは、 自己署名証明書は信頼されません。

診断

ログに次のエラーが記録されている場合があります(/var/tmp/edgemicro-`hostname`- *.log)。

2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80-
b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate
chain][SELF_SIGNED_CERT_IN_CHAIN][]

エラーコード SELF_SIGNED_CERT_IN_CHAIN は、Edge API に 自己署名証明書をターゲット サーバーから受信した可能性が高いことを示します。これを確認するには、次のコマンドを実行します。 次のとおりです。

  1. 次の openssl コマンドを実行して、ターゲット サーバーの 証明書チェーン:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. ターゲット サーバーの証明書チェーンが実際に自己署名されている場合は、これが 解決します。

    次の例では、ターゲット サーバーが自己署名証明書を提示しています。

    echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
    
    depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority
    verify error:num=19:self signed certificate in certificate chain
    verify return:0
    DONE
    

解決策

  1. ターゲット サーバーを所有するチームと協力して、ターゲット サーバーによって署名された適切な TLS 証明書を調達してください。 認証局(CA)に委任します。 <ph type="x-smartling-placeholder">
  2. それができない場合は、次のいずれかのオプションを使用して自己署名を許可することを検討してください。 作成する必要があります。

    <ph type="x-smartling-placeholder">

    オプション 1: システム プロパティを設定して、Edge AppSheet がすべてを信頼できるようにする 証明書

    1. Docker を使用している場合: <ph type="x-smartling-placeholder"></ph> Node.js で信頼されていない CA を使用する
    2. それ以外の場合は、NODE_EXTRA_CA_CERTS という環境変数をエクスポートします。 ルート CA ファイルを指します。

      これは公式の Node.js 確認できます

    で確認できます。 <ph type="x-smartling-placeholder">

    オプション #2: その特定の YAML 構成ファイルを信頼するように Edge AppSheet の YAML 構成ファイルを構成する そのターゲット サーバーの

    1. ターゲット サーバーの証明書(またはチェーン)が PEM 形式であることを確認します。宛先 他の証明書形式を PEM に変換するには、 <ph type="x-smartling-placeholder"></ph> サポートされている形式への証明書の変換をご覧ください。
    2. 証明書チェーンがある場合は、証明書が正しいことを確認します。 できます。最初にリーフ証明書、次に中間証明書を ルート証明書があります。これについては、このモジュールの <ph type="x-smartling-placeholder"></ph> 証明書チェーンを検証する

      次の例では、信頼できる CA ファイルを untrusted-root.badssl.com

      edgemicro:
      ...
      targets:
        - host: 'untrusted-root.badssl.com'
          ssl:
            client
              ca: /opt/apigee/certs/untrusted-root.pem
      

    設定手順については、このモジュールの <ph type="x-smartling-placeholder"></ph> Edge AppSheet モジュール - 一方向および双方向のサウスバウンド TLS を構成する 詳しくは、 <ph type="x-smartling-placeholder"></ph> Edge Appliance サーバーでの SSL の構成をご覧ください。

問題が解決しない場合は、 診断情報の収集が必要な場合

原因: Apigee Edge Management Server が自己署名証明書を使用する

<ph type="x-smartling-placeholder">

Edge AppSheet の初回設定時に、実行する必要があるコマンドの 1 つが、 edgemicro configure または edgemicro private configure です。このコマンドにより、 ブートストラップすると、クラスタから Apigee Edge にアクセスして、必要な情報がダウンロードされます。

Edge Private Cloud の場合、Management Server の URL は -m 引数によって決まります。 Management Server に対して TLS を有効にしている場合、Edge AppSheet は、 Management Server から提示された証明書です。

Edge Private Cloud の edgemicro configure コマンドの例を次に示します。

edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443

Management Server に自己署名証明書が設定されている場合、 次のようなエラーが表示されます。

{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }

診断

  1. この場合、Management Server には、 (management.apigee-dev.net) 自己署名 TLS 証明書を返す可能性があります。
  2. Apigee Edge システム管理者が証明書を提供した可能性があります。 コピーを取得できます
  3. それ以外の場合は、次のコマンドを実行して証明書に関する情報を取得します。
    echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
    
  4. Management Server に自己署名証明書がある場合は、それがこの問題の原因です。 あります。

解決策

  1. ターゲット サーバーを所有するチームと協力して、ターゲット サーバーによって署名された適切な TLS 証明書を調達してください。 認証局(CA)に委任します。 <ph type="x-smartling-placeholder">
  2. それができない場合は、次の手順で自己署名を許可します。 作成する必要があります。

  3. <ph type="x-smartling-placeholder">
  4. システム プロパティを設定して、Edge AppSheet がすべての証明書を信頼できるようにします。
  5. Docker を使用している場合: <ph type="x-smartling-placeholder"></ph> Node.js で信頼されていない CA を使用する。
  6. それ以外の場合は、NODE_EXTRA_CA_CERTS という環境変数をエクスポートします。 ルート CA ファイルを指します。これが 公式ガイドに記載 Node.js ウェブサイト。 <ph type="x-smartling-placeholder">

診断情報の収集が必要な場合

上記の手順でも問題が解決しない場合は、以下の情報を収集します。 Apigee Edge サポートにお問い合わせください。

  • ログファイル: デフォルトのフォルダは /var/tmp ですが、 メインの config.yaml ファイル(logging > dir parameter)内容 オプションを指定する前に、log > levelinfo に変更することをおすすめします。 Apigee Edge サポートに送信します。
  • 構成ファイル: Edge Migration の主な構成は YAML 形式で記述します。 このファイルは、デフォルトの Edge Appliance フォルダ $HOME/.edgemicro にあります。こちらの default.yaml というデフォルト構成ファイルを作成し、環境ごとに 1 つずつ作成します。 ORG-ENV-config.yaml。このファイルをアップロード 影響を受けた組織と環境についてすべて

    リファレンス ドキュメント

    <ph type="x-smartling-placeholder"></ph> TLS を使用して Edge API にアクセスするように Edge UI を構成する