Android端末にOpenVPNクライアントの設定をする

OS: Android 7.0
OpenVPN Connect 3.0.5

Windows10にOpenVPNクライアントの設定を施したら続いてAndroid端末でもOpenVPNで接続したいものである。Androidクライアント用に証明書と秘密鍵を誂える。

$ cd easy-rsa-3.0.5/easyrsa3/
$ ./easyrsa build-client-full android
(snip)
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
(snip)
Enter pass phrase for /home/guro/src/openvpn/easy-rsa-3.0.5/easyrsa3/pki/private/ca.key:

設定ファイルも準備しておく。

$ vi android.ovpn
client
dev             tun
proto           udp
remote          www7390uo.sakura.ne.jp 1194
ca              ca.crt
cert            android.crt
key             android.key
tls-auth        ta.key 1
cipher          AES-256-GCM
remote-cert-tls server
compress        lz4-v2
auth-nocache
nobind

これらのファイルをAndroid端末へ首尾よくコピーする。

$ sudo scp /etc/openvpn/ca.crt /etc/openvpn/ta.key pki/issued/android.crt pki/private/android.key android.ovpn guro@192.168.0.150:/mnt/file

次はAndroid端末を手にしてOpenVPNさんが作り上げた「OpenVPN Connect – Fast & Safe SSL VPN Client」をインストールする。

図1. OpenVPNクライアントのAndroidアプリ

OpenVPN Connectを起動。

図2. アイコンをタップ

「OVPN Profile Connect with .ovpn file」をタップ。

図3. 設定ファイルの選択

端末にコピーした設定ファイルを選択し、「IMPORT」をタップ。

図4. 設定ファイルのインポート

設定内容に誤りが無ければ「Profile successfully imported」である。あとはプロファイル名を好きに付けてから「ADD」をタップする。都合の悪い設定があればここで具体的なエラー内容が示されるようになっていた。

「Save Private Key Password」にチェックをつけると秘密鍵のパスフレーズを入力する箇所が現れる。OpenVPNサーバへ接続する都度、パスフレーズを入力するのが差し支えあるならここで入力しておくと宜しい。

図5. インポートに成功

追加したプロファイルをタップすると接続が開始される。右上にある困り顔の一反木綿みたようなピクトグラムはログを表示するためのものであった。

図6. ログ表示のピクトグラム

秘密鍵のパスフレーズを保存するよう設定していなければ毎回ここで入力画面が顔を出す。

図7. 秘密鍵のパスフレーズ入力画面

初回接続時だけ接続要求のメッセージが表示される。ソースを信頼できる場合にのみOKをタップする。

図8. 接続要求画面

滞りなく接続が完了するとこういう具合に画面が切り替わる。

図9. 接続後の画面

ところがUbuntu Server 12.04に構築したOpenVPNサーバであると、接続の際に「The certificate is signed with an unacceptable key (eg bad curve, RSA too short)」というようなエラーメッセージが出て処理が終いになってしまった。

接続のログをひとしべひとしべ確認してゆくと認証局の鍵が512bitで作成されているようであるが、此れが為にエラーが出ているような雰囲気を感ずる。easyrsaのスクリプトを編集して2048bitで作成されるよう試みたがうまい具合に処理されなかったのでOpenVPNサーバのOpenSSLを1.0.1から1.0.2に刷新したところ問題が解決した。

OpenSSLのサイトには1.0.1はもはやサポートされないので使ってはならぬとある。その場しのぎの対策としてクライアント側の設定ファイルに

tls-cipher "DEFAULT:@SECLEVEL=0"

を追加してしのいでいたが、安全を考えると心持ちの良い解決方法ではないのでやはりOpenSSLをアップデートするのがよさそうである。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください