AirWatch Tunnel (MAG) と API/AWCM 間の信頼関係エラーのトラブルシューティング

API と AWCM へのトンネリング

ネットワーク要件として、AirWatch Tunnel は AirWatch API と AirWatch クラウド メッセージング (AWCM) の両方のサービスにアクセスできるように構成されている必要があります。AirWatch Tunnel はこれらのエンドポイントに要求を送信し、社内リソースへのアクセスが許可されているデバイスの一覧を取得/更新します。AirWatch API や AWCM への接続に失敗すると、AirWatch Tunnel は許可デバイスの一覧を取得できないため、デバイスから社内リソースへのアクセスはブロックされます。 

AirWatch API および AWCM のエンドポイントとの通信が必要な AirWatch Tunnel サービスは次のとおりです。

  • プロキシ サービス (Windows 版または Linux 版)*
  • アプリ ベース VPN サービス (VPND) (Linux 版)

:現時点では、Windows 版でも Linux 版でも、Content Gateway は AirWatch API や AWCM との接続を行いません。したがって、この記事は Content Gateway でのエラーのトラブルシューティングには利用できません。 

AirWatch Tunnel が上記の情報を取得するための要求には、セキュアな HTTPS 接続が使用されます。そのため、AirWatch Tunnel はこれらのサーバにバインドされた SSL 証明書を信頼できるように構成されている必要があります。この信頼関係の確立に失敗すると、ログ ファイルに SSL ハンドシェイク エラーが記録されます。ここでは、このようなエラーを解消するための手順について説明します。

Tunnel プロキシでは、config.xml ファイルに含まれる「EnableOutboundCallsViaProxy」オプションの値が true に設定されていない場合、Windows 版でも Linux 版でも、AirWatch API および AWCM への要求はリレー サーバから送信されます (リレー/エンドポイント構成の場合)。このオプションが true に設定されていると、要求はいったんエンドポイント Tunnel サーバに転送され、そこからさらに他の送信プロキシに転送されます。アプリ ベース VPN サービスでは、リレー Tunnel サーバからのみ、この要求が送信されます (リレー/エンドポイント構成の場合)。要求がリレー サーバからのみ送信される場合は、下記のエラー解決手順を実行する必要があるのはリレー サーバだけです。基本エンドポイントのみの構成の場合は、エンドポイント サーバでこの手順を実行してください。

 

ログに記録されるエラー

以下に示す例を参照して、ログから、AirWatch API や AWCM とのセキュアな接続の確立に失敗していることを示すエラーを見つけてください。その後、該当するエラーの種類 (A ~ D) に応じて、下記のエラー解決手順を実行してください。

 

A:Tunnel プロキシ (Windows 版または Linux 版) から API への接続に失敗する場合のエラー (mag.log):

WARN  [main] [RelayMag:184] - Unable to get latest config from API Server! Reason: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification 

 

B:Tunnel プロキシ (Windows 版または Linux 版) から AWCM への接続に失敗する場合のエラー (mag.log):

WARN  [AwcmIdler] [AwcmIdler:130] - Communication to AWCM failed! Reason: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

C:Tunnel アプリ ベース VPN (Linux 版) から API への接続に失敗する場合のエラー (tunnel.log):

INFO: TCPSocket::Connect Resolving address {API_HOSTNAME}

….(中略)….

ERROR: SSLClient: Handshake with AWCM/API returns returns=-1 error=1 error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

 

D:Tunnel アプリ ベース VPN (Linux 版) から AWCM への接続に失敗する場合のエラー (tunnel.log):

INFO: TCPSocket::Connect Resolving address {AWCM_HOSTNAME}

….(中略)….

ERROR: SSLClient: Handshake with AWCM/API returns returns=-1 error=1 error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

 

SSL 証明書の信頼関係エラーの解決方法

上記の 4 つのいずれの場合も、エラーを解決するには、API サーバまたは AWCM サーバからルート証明書 (および、必要に応じて中間証明書) を、AirWatch Tunnel サーバの適切な証明書ストアにインポートする必要があります。リレー/エンドポイント構成の場合、この手順を実行する必要があるのはリレー サーバだけです。基本エンドポイント構成の場合は、エンドポイント Tunnel サーバでこの手順を実行します。実際に実行する手順は、どのコンポーネントでエラーが発生しているかによって異なります。以下に、具体的な作業手順を示します。実際に作業を行う前に、上記セクションで示したエラー種別 (A ~ D) のうち、どのエラーが発生しているのかを確認してください。 

AirWatch API サービスと AWCM サービスが同じサーバにインストールされている場合、両方のサービスで同じ SSL 証明書が使用されていることもあります。デスクトップ ブラウザを使用して AirWatch API と AWCM のエンドポイント URL にアクセスし、どの証明書が使用されているかを確認してください。使用されている証明書が無効になっている場合 (期限切れ、取り消しによる失効、サーバ URL の不一致、など) は、下記の手順を実行してもエラーは解消されません。先に、証明書が無効になっている問題を解決してください。 

 

A または B のエラーの解決:Tunnel プロキシ (Windows 版) から AirWatch API または AWCM への接続

1. API サーバまたは AWCM サーバから、Base64 エンコードされた X.509 形式のルート証明書および中間証明書をダウンロードします。具体的には、デスクトップ ブラウザで AirWatch API または AWCM の URL にアクセスし、証明書の詳細を表示して、これをファイルにコピーします。AirWatch Tunnel が使用している AirWatch API または AWCM の URL がわからない場合は、次の方法で確認できます。

    • C:\AirWatch\MobileAccessGateway\conf\config.xml ファイルを開き、「ApiUrl」または「AwcmUrl」の値を確認します。

2. 証明書のファイルを C:\Program Files\Java\jre{バージョン}\lib\security にコピーします。このパスは、インストールされている JRE のバージョンによって異なります。C:\Program Files\Java\ に複数のフォルダが存在する場合は、まず次のファイルに含まれている「wrapper.java.command」の値を確認して、実際にどのバージョンの Java が使用されているかを特定してください。 

C:\AirWatch\MobileAccessGateway\service\mag-conf\magServiceWrapper.conf (このファイルに記載されているパスは短縮名になっているため、Windows エクスプローラのウィンドウに表示されているパスとは一部が異なっている場合があります。)

3. コマンド プロンプトを開き、証明書ファイルをコピーした …\lib\security フォルダに移動します。

4. コマンドラインで次のコマンドを実行します。

    • keytool -importcert -keystore cacerts -trustcacerts -alias ALIAS_NAME -file FILE_NAME -storepass KEYSTORE_PASSWORD –noprompt
      • 「ALIAS_NAME」は、後で Java キーストア内の証明書を特定できるようにするための任意の名前です。
      • 「FILE_NAME」は、ステップ 2 でこのフォルダにコピーしたルート証明書または中間証明書の .cer/.crt ファイルの名前です。
      • 「KEYSTORE_PASSWORD」は、Java キーストアのパスワードです。既定では「changeit」になっています。

5. 複数の証明書 (ルート証明書と中間証明書の両方) を Java キーストアにインポートする場合は、ステップ 4 の操作を証明書ごとに実行します。

6. 「AirWatch Mobile Access Gateway」サービスを再起動し、ログを調べてエラーがまだ発生しているかどうかを確認します。エラーが発生していなければ、このトラブルシューティングは完了です。 

 

A または B のエラーの解決:Tunnel プロキシ (Linux 版) から AirWatch API または AWCM への接続

1. API サーバまたは AWCM サーバから、Base64 エンコードされた X.509 形式のルート証明書および中間証明書をダウンロードします。具体的には、デスクトップ ブラウザで AirWatch API または AWCM の URL にアクセスし、証明書の詳細を表示して、これをファイルにコピーします。AirWatch Tunnel が使用している AirWatch API または AWCM の URL がわからない場合は、次の方法で確認できます。

/opt/airwatch/tunnel/proxy/conf/config.xml ファイルを開き、「ApiUrl」または「AwcmUrl」の値を確認します。

2. 証明書のファイルを /usr/java/default/jre/lib/security にコピーします。

3. 作業ディレクトリをステップ 2 のディレクトリに変更し、次のコマンドを実行します。

    • keytool -import -keystore cacerts -trustcacerts -alias ALIAS_NAME - file FILE_NAME -storepass KEYSTORE_PASSWORD –noprompt
      • 「ALIAS_NAME」は、後で Java キーストア内の証明書を特定できるようにするための任意の名前です。
      • 「FILE_NAME」は、ステップ 2 でこのフォルダにコピーしたルート証明書または中間証明書の .cer/.crt ファイルの名前です。
      • 「KEYSTORE_PASSWORD」は、Java キーストアのパスワードです。既定では「changeit」になっています。

4. 複数の証明書 (ルート証明書と中間証明書の両方) を Java キーストアにインポートする場合は、ステップ 3 の操作を証明書ごとに実行します。 

5. Tunnel プロキシ サービスを再起動し、ログを調べてエラーがまだ発生しているかどうかを確認します。エラーが発生していなければ、このトラブルシューティングは完了です。

 

C または D のエラーの解決Tunnel アプリ ベース VPN (Linux 版) から AirWatch API または AWCM への接続

1. 信頼済み CA バンドルに証明書が含まれていないことが原因でエラーが発生していることを確認するために、次のコマンドを実行します。いずれかのコマンドが証明書エラーを返す場合は、ステップ 2 に進んでエラーを解決します。

API エンドポイントに対して:

    • curl https://{API_URL}/api/help --cacert /etc/pki/tls/certs/ca-bundle.crt
    • 正常に処理された場合、証明書エラーは発生せず、「HTTP 401 Unauthorized」の応答が返ります。

AWCM エンドポイントに対して:

    • curl https://{AWCM_URL}/awcm/status --cacert /etc/pki/tls/certs/ca-bundle.crt
    • 正常に処理された場合、証明書エラーは発生せず、「HTTP 200 OK」の応答が返ります。

2. API サーバまたは AWCM サーバから、Base64 エンコードされた X.509 形式のルート証明書および中間証明書をダウンロードします。具体的には、デスクトップ ブラウザで AirWatch API または AWCM の URL にアクセスし、証明書の詳細を表示して、これをファイルにコピーします。AirWatch Tunnel が使用している AWCM または AirWatch API の URL がわからない場合は、次の方法で確認できます。

    • /opt/airwatch/tunnel/vpnd/server.conf ファイルを開き、「api_address」または「awcm_address」の値を確認します。AWCM については、「awcm_port」の値も確認してください。

3. 証明書ファイルをテキスト エディタで開き、「-----BEGIN CERTIFICATE-----」の行から「-----END CERTIFICATE-----」の行までのすべてのテキスト (開始行と終了行を含む) をコピーします。

4. Tunnel アプリ ベース VPN で使用されている ca-bundle を含むディレクトリに移動します。このファイルは、既定では /etc/pki/tls/certs/ca-bundle.crt にあります。ステップ 2 の server.conf ファイルに含まれる「api_ca」の値で正しいディレクトリを確認し、必要に応じて移動先を変更してください。

5. ステップ 3 でコピーしたテキストを、このファイルの末尾に貼り付けます。複数の証明書をインポートする場合は、それぞれの証明書でコピーしたテキストを、このファイルに任意の順序で貼り付けます。その後、変更を加えたファイルを保存します。 

6. VPND サービスを再起動し、ログでエラーがまだ発生しているかどうかを調べます。 

 

*:Windows Server で実行されるプロキシ サービスは通常、「Mobile Access Gateway (MAG)」と呼ばれます。この記事では、Windows 上のサービスも Linux 上のサービスも「AirWatch Tunnel」と呼称していますが、必要に応じて Windows 版と Linux 版を区別して説明しています。この記事は、Windows 上で MAG を実行しているケースにも、Linux 上で AirWatch Tunnel を実行しているケースにも適用可能です。 

免責事項:これは英文の記事「Troubleshooting AirWatch Tunnel/MAG and API/AWCM Trust Errors」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Have more questions? Submit a request

0 Comments

Article is closed for comments.