Android 6.0以降の GlobalProtect アプリ においてIPアドレスを使用したVPN接続が確立されない

Printer Friendly Page

※この記事は以下の記事の日本語訳です。

GlobalProtect app on Android 6.0+ cannot establish VPN connection using IP address
https://live.paloaltonetworks.com/t5/Management-Articles/GlobalProtect-app-on-Android-6-0-cannot-est...

 

事象

以下の状況において、Android 6.0以降の GlobalProtect アプリ でVPNを接続できない場合があります:

 

  • GlobalProtect ポータル/ゲートウェイの証明書を証明する ルートCA 証明書がAndroid 端末にインストールされている
  • GlobalProtect ポータル/ゲートウェイの証明書の コモンネーム (Common Name, CN) が IP アドレスになっている

 

接続できない状況では、次のメッセージが表示されます : Cannot connect to GlobalProtect portal

Error-on-AndroidVM-001.png

 

 

GlobalProtect アプリケーションで取得する Gp.log では、以下のようなエラーが出力されます:

(6227)01/05 17:55:33:120201 - javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.206.1 not verified:
certificate: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN=192.168.206.1,ST=Tokyo,C=JP
subjectAltNames: [192.168.206.1]
(6227)01/05 17:55:33:120352 - exception GetHttpResponse, response code is 0
(6227)01/05 17:55:33:120521 - response from server is:
null, exception Message: Hostname 192.168.206.1 not verified:
certificate: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN=192.168.206.1,ST=Tokyo,C=JP
subjectAltNames: [192.168.206.1]
eType:javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.206.1 not verified:
certificate: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN=192.168.206.1,ST=Tokyo,C=JP
subjectAltNames: [192.168.206.1]
(6227)01/05 17:55:33:120557 - (l5)JNI,6243,508,not handled, ret=error, javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.206.1 not verified:
certificate: sha1/5BHzss0x9EpOd9YtEPZcwtCNaOQ=
DN: CN=192.168.206.1,ST=Tokyo,C=JP
subjectAltNames: [192.168.206.1], return NULL now

 

 

原因

これはアンドロイドOS 6.0以降における新しい挙動によるものです。

 

Android 6.0より、証明書の CN が IP アドレスである場合、その IP アドレスは「サブジェクトの別名 (Subject Alternative Name, subAltName, SAN)」にも存在していることを確認します。もし IP アドレスが subAltName に存在しない場合、証明書の検証に失敗します。

古い バージョンの Android では、CN が一致している場合には検証に成功します。

 

 

 

解決策

GlobalProtect ポータル/ゲートウェイの証明書として iPAddress subAltName フィールドを持つような証明書を生成し、既存の証明書を置き換えます。

 

以下のスクリーンショットでは、Palo Alto Netrwork 次世代ファイアウォールで iPAddress subAltName を設定する方法を示しています。

 

証明書の生成時、Type に "IP" を追加し、IP アドレスを Value フィールドに入力します。

iPAddress-subAltName-PANFW001.png 

 

生成された証明書には Subject Alternative Name にIPアドレスが存在しています :

cert-on-windows-001.png

 

この証明書をGlobalProtect ポータル/ゲートウェイの証明書として設定します。その後、VPN接続が確立可能となります。

 

GlobalProtect 用のサーバ証明書の設定方法は以下のガイドをご確認ください: 

Deploy Server Certificates to the GlobalProtect Components

 

  

他の方法として、GlobalProtect Portal / Gateway を証明するルートCA証明書をAndroid端末から削除する方法があります。(多くの場合 "Setting > Security > Trusted credentials" から可能)

 

この場合、GlobalProtect アプリは"信頼できない証明書"であることを示す警告を一度表示し、その後接続が確立されます。

 

error-on-AndroidVM-001.png

 

 

この方法は、ユーザ自身によるVPN接続先の正当性の確認が必要となるため、推奨されません。