OpenVPNクライアント(Windows)編では、WindowsマシンにOpenVPNをインストールし、VPNクライアントの設定を行ないました。VPNを構築するそもそもの目的は、「暗号化されていない公衆無線LANで安全に通信する」だったわけです。PCだと、カフェなどで作業するときにインターネットを使いたいから公衆WiFiを使う、というシーンはよくあります。
しかし、持ち歩いている人の数から考えると、外出中にスマートフォンやタブレットでネットを使う際に、「ギガを節約したいから」という理由などで公衆WiFiを利用するというケースのほうが多いような気がしてきました。
そこで、本記事ではAndroid端末を対象として、OpenVPNクライアントのインストールおよび設定を説明していきます。
クライアント証明書の発行
Windowsマシンにクライアントをセットアップしたときと同様、まずクライアント証明書を発行しておきましょう。後ほどAndroid端末にコピーする証明書関連のファイルはWindowsのときと同様、以下の3つです。
root-ca.crt
: Root CAの証明書vpnclient.crt.full
: クライアントのフルチェーン証明書vpnclient.key
: クライアントの秘密鍵(パスフレーズあり)
証明書の発行手順はこちらを参照してください。
設定ファイルの準備
今回紹介するOpenVPNクライアントは、いずれも設定ファイルをインポートする機能を備えています。モバイル端末上でややこしい設定をするのは大変なので、Windows/Mac PCやFreeBSDマシンであらかじめ設定ファイルを準備して、これをモバイル端末にコピーし、クライアントにインポートするやり方が便利です。
OpenVPNサーバを構築したFreeBSDマシンで準備する場合は、クライアント用のサンプル設定がインストールされていますので、これをコピーして編集します。
cd <任意のディレクトリ>
cp /usr/local/share/examples/openvpn/sample-config-files/client.conf ./vpnserver.ovpn
設定ファイルの内容はWindowsクライアントとまったく同じです。OpenVPNクライアント(Windows)編をご参照ください。また、以下のGitHubリポジトリのclient
ディレクトリに完全な設定ファイルがありますので、必要に応じてこちらもご参照ください。
- FreeBSD-OpenVPN - Sample configuration files for setting up an OpenVPN server/client on FreeBSD
証明書と設定ファイルの端末へのコピー
Windowsのときと同様、コピーするファイルは全部で以下の5つです。
root-ca.crt
: Root CAの証明書vpnclient.crt.full
: クライアントのフルチェーン証明書vpnclient.key
: クライアントの秘密鍵(パスフレーズあり)ta.key
: HMAC用の共有秘密鍵vpnserver.ovpn
: クライアントの設定ファイル
FreeBSDマシンで準備作業を行なった場合は、これらのファイルを1つのディレクトリにまとめておいて、以下の要領でファイルをAndroid端末に転送します。
$ cd <任意のディレクトリ> # ディレクトリにcd
$ ls # ディレクトリの内容確認
root-ca.crt vpnclient.crt.full vpnserver.ovpn
ta.key vpnclient.key
$ adb shell mkdir -p /sdcard/OpenVPN # 端末上にOpenVPN用のフォルダを作成
$ adb push * /sdcard/OpenVPN/ # 端末のOpenVPNフォルダにファイルをコピー
root-ca.crt: 1 file pushed. 0.1 MB/s (2844 bytes in 0.037s)
ta.key: 1 file pushed. 0.1 MB/s (636 bytes in 0.006s)
vpnclient.crt.full: 1 file pushed. 0.3 MB/s (2059 bytes in 0.007s)
vpnclient.key: 1 file pushed. 0.4 MB/s (1766 bytes in 0.005s)
vpnserver.ovpn: 1 file pushed. 0.6 MB/s (3649 bytes in 0.006s)
5 files pushed. 0.1 MB/s (10954 bytes in 0.074s)
OpenVPNクライアントのインストール
ここからは端末側での作業になります。まず、OpenVPNクライアントをインストールしましょう。以下のいずれかをGoogle Playからインストールしてください。
- OpenVPN for Android - 個人的にはこちらが好き
- OpenVPN Connect - OpenVPN Technologies社公式アプリ
OpenVPN ConnectはOpenVPN Technologies社が開発する公式アプリです。個人的な好みはOpenVPN for Androidですが、どちらでもそれほど使用感にかわりはないと思います。
ただし、OpenVPN Connectを使う場合は一点だけ注意をお願いします。それは、fragment
ディレクティブに対応していない、ということです。したがって、OpenVPN Connectを使う場合は、サーバ設定およびクライアント設定の以下の部分を削除するかコメントアウトしてください。
サーバ設定
fragment 1354
- クライアント設定
fragment 1354 mssfix 1354
いずれも、それぞれの設定ファイルの一番最後の部分です。
OpenVPNアプリの設定
さあ、残る作業は端末に転送しておいた設定ファイルをOpenVPNアプリにインポートして、サーバへの接続確認をするだけです。2つのアプリケーションそれぞれについて手順を示しました。インストールしたほうの手順を参考にしていただければと思います。
OpenVPN for Androidの場合
アプリを起動すると以下の画面が現れます。右上にあるインポートアイコン(箱に下向きの矢印が付いているアイコン)をタップします。
すると、ファイルを選択する画面になります。さきほどファイルを転送しておいたフォルダ/sdcard/OpenVPN
に移動します。そして、vpnserver.ovpn
ファイルをタップします。
すると、証明書関連のファイルを選択する画面になりますので、CA証明書(root-ca.crt
)、TLS認証ファイル(ta.key
)、クライアント証明書のキー(vpnclient.key
)、クライアント証明書(vpnclient.crt.full
)をそれぞれ選択してください。(すべて同じフォルダにファイルがありますので楽だと思います。) そして、最後に右上のチェックマークをタップします。
プロファイルのインポートが完了すると、プロファイルの一覧画面になります。vpnserver
をタップして接続を開始します。
秘密鍵のパスフレーズを求められますので入力します。
接続が完了すると以下の画面になります。右上のほうにVPNの状態が表示されていますので、「接続しました」となっていることを確認してください。
以上でVPN接続は完了です。
OpenVPN Connectの場合
アプリを起動すると以下の画面が現れます。一番下にある”OVPN Profile”をタップします。
すると、プロファイルをインポートする画面になります。vpnserver.ovpn
をタップし、右側にチェックマークがついていることを確認した後、右上の”IMPORT”をタップします。
すると、プロファイルのタイトル情報入力画面になります。自分のわかりやすいようなタイトルを入力した後、右上の”ADD”をタップします。
プロファイルのインポートが完了すると、プロファイルの一覧画面になります。インポートしたプロファイルが表示されているのを確認した後、これをタップして接続を開始します。
秘密鍵のパスフレーズを求められますので入力します。
接続が完了すると以下の画面になります。プロファイルの表示が緑色に変わり、”CONNECTED”と表示されていることを確認してください。
以上でVPN接続は完了です。
参考文献
- OpenVPN, https://openvpn.net/
- OpenVPN for Android, https://play.google.com/store/apps/details?id=de.blinkt.openvpn
- OpenVPN Connect (Android版), https://play.google.com/store/apps/details?id=net.openvpn.openvpn
- OpenVPN Connect (iOS版), https://itunes.apple.com/jp/app/openvpn-connect/id590379981