はじめに
長らくリモートワークをしており、VPN接続して会社のサーバを自宅から見に行っています。
私は学生時代からずっとiPhoneユーザだったのですが、思うところあって今回Androidに買い替えました。
それまでは会社のsoftether VPNサーバにiOSの「SSTP Connect」(有料)を使って接続していました。
さいわい、Android購入前に、AndroidにもSSTP接続が可能な「Open SSTP Client」なるものがあるとの情報を得たため、Androidに乗り換えました。
ところが、「SSTP Connect」と違って、「Open SSTP Client」を使うには一手間、具体的にはCA証明書をAndroid端末側に入れなければなりませんでした。
数日かけてやっと接続できるようになりました。
「Open SSTP Client」のレビューには、SoftEtherのVPNサーバに接続できた!なるものがいくつか見られたものの、インターネット上のまとまった記事は見つからなかったので、今回記録として残しておきます。
環境
SoftEther VPNサーバ
- Windows 10 Version 22H2 Build19045.3930 (MinisforumのミニPC)
- SoftEther VPN 4.0(Ver4.39, Build 9772)
- 社内LANに設置
- hostname: hogefuga.softether.net
- port: 5555
- username: test111
- password: p@ssword
Android
- OPPO Reno7 A
- OS: ColorOS 13 | Android 13 CPH2353_11_F.56
- Open SSTP Client: 1.6.5.1
- 自宅からの接続
設定
SoftEther VPN側の設定
5555番ポートを開けておく
- 今回は5555番のポートを接続に使うので、「SoftEther VPNサーバー管理マネージャ」の「リスナーの確認」でTCP 5555が「動作中」になっていることを確認します。
- 念の為、VPNサーバの5555番ポートと疎通可能か、確認しておく。cf. ポート疎通確認方法
ルート証明書の作成
「SoftEther VPNによるVPN環境構築(21) TLSサーバー検証をオンにするために必要なこと」という記事の、「TLSサーバー検証に合格するための設定」を参考に、ルート証明書を作成します。
流れとしては、
- 「SoftEther VPNサーバー管理マネージャ」を起動して、ルート証明書(.cerと.keyという拡張子のファイル)のエクスポート
- 「SoftEther VPNサーバー管理マネージャ」でサーバー証明書の作り直し。証明書の有効期間を824日にするのがミソです。(iPhoneだとこの設定が必要でした。Androidだけだったら不要かも)
拡張子を変える!
Androidで実際に使うのは.cerファイルのみです。
重要ポイントとして、拡張子を".cer"から".crt"に変える、というのがあります。
cerもcrtも中身は同じなのですが、なぜかAndroidだとcerファイルだと読んでくれず、crtファイルにしたら読み込んでくれました。
なので、WindowsのPCからAndroidにCA証明書を移す時点で、拡張子を".crt"に変えてしまいましょう。
ちなみに、
- Windowsで発行:cer
- Linuxで発行:crt
とのことです。
CA証明書をAndroidに移す
iPhoneと違って、Windows機とAndroid機をUSB-Cケーブルで直接接続すれば、任意の場所にファイルが移せるのは楽ですね。".crt"ファイルをAndroidのDownloadsあたりにコピーします。
Android側の設定
CA証明書をインストールする
- (歯車マークの) 「設定」アプリ→「パスワードとセキュリティ」→「システムセキュリティ」→(ずっと下の方に)「認証情報ストレージ」→「ストレージから証明書をインストール」→「CA証明書」からインストール。ここで色々聞かれますが、自分で作成したものなので「インストールする」を選び続け、先ほどコピーしてきた.crtファイルを選びます
- インストールが成功すると、「設定」→「パスワードとセキュリティ」→「システムセキュリティ」→「認証情報ストレージ」の「信頼できる証明書」→「ユーザー」タブに、自分のSoftEther VPNサーバのDDNSホスト名(今回の場合なら、hogefuga.softether.net)が表示されています
Open SSTP Clientで接続する
-
Google Playストアから、Open SSTP Clientをインストールしてきます
-
英語表記でビビりますが、設定は下記の通り。SETTINGタブは、ポートとログくらいしかいじっていないはずです
HOMEタブ
- Hostname: hogefuga.softether.net(自分のSoftEther VPNサーバのDDNSホスト名)
- Username: test111(自分で設定したもの)
- Password: p@ssword(自分で設定したもの)
SETTINGタブ
SSL Layer
- Port Number: 5555
- SSL Version: DEFAULT(ちなみに、TLSv1.3が選択されました)
- Verify Hostname: チェックを入れる
- Add Trusted Certificates: OFF
- Enable Only Selected Cipher Suites: OFF
HTTP Proxy
- Use HTTP Proxy: OFF
PPP Layer
- MRU: 1500
- MTU: 1500
PPP Authentication Protocol
- Enable PAP: ON
- Enable MS-CHAPv2: ON
- Timeout Period(second): 3
PPP Netword Protocol
- Enable IPv4: ON
- Request Static IPv4 Address: OFF
- Enable IPv6: OFF
DNS Server
- Request DNS Server Address: ON
- Use Custom DNS Server: OFF
Routing
- Add Default Route: ON
- Route Private/Unique-Local Addresses: OFF
- Add Custom Routes: OFF
- Enable App-Based Rule: OFF
Reconnection
- Enable Reconnection: OFF
Log
- Save Log: ON
- Select Log Directory: 任意の場所
あとはHOMEタブから接続を試みて、接続を確認してください。
接続が行われると、"Current Status"に接続先や今のローカルIPアドレス情報などが表示されてConnectedと出るはずです。お疲れ様でした。
おわりに
副産物として、「SoftEther VPNによるVPN環境構築(21) TLSサーバー検証をオンにするために必要なこと」の記事の設定を行ったことで、iPhoneのSSTP ConnectでTLSサーバ検証がオンになり、よりセキュアな通信が可能になります。
2023/2/8追記
- "hogefuga.softether.net"はport5555(今回の場合)
- "hogefuga.vpnazure.net"はport443
でそれぞれ接続できるようです。
ルータをいじれなくても、port443はSSL/TLS通信のポートなので、ほとんどの場合開いており、問題なく使えます。
なので、ルータの設定を変更できない場合は、後者が選択肢として上がりそうでした。
hostnameとportの組み合わせは、ポート疎通確認方法で確認しました。
port | hogefuga.softether.net | hogefuga.vpnazure.net |
---|---|---|
5555 | ◯ | × |
443 | × | ◯ |