Android 13でOpen SSTP Clientを使ってSoftEther VPNサーバにSSTP接続する

## はじめに

長らくリモートワークをしており、VPN接続して会社のサーバを自宅から見に行っています。
私は学生時代からずっとiPhoneユーザだったのですが、思うところあって今回Androidに買い替えました。
それまでは会社のsoftether VPNサーバにiOSの「[SSTP Connect](https://apps.apple.com/jp/app/sstp-connect/id1543667909)」（有料）を使って接続していました。
さいわい、Android購入前に、AndroidにもSSTP接続が可能な「[Open SSTP Client](https://play.google.com/store/apps/details?id=kittoku.osc&hl=ja&gl=US)」なるものがあるとの情報を得たため、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. [ポート疎通確認方法](https://qiita.com/seaka829/items/ded68d0fa0bf0a57e973)


#### ルート証明書の作成

「SoftEther VPNによるVPN環境構築(21) TLSサーバー検証をオンにするために必要なこと」という記事の、[「TLSサーバー検証に合格するための設定」](https://solomon-review.net/construct-softether-vpn-21/#toc5/)を参考に、ルート証明書を作成します。

流れとしては、

1. 「SoftEther VPNサーバー管理マネージャ」を起動して、ルート証明書(.cerと.keyという拡張子のファイル)のエクスポート
1. 「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](https://play.google.com/store/apps/details?id=kittoku.osc&hl=ja&gl=US)をインストールしてきます

- 英語表記でビビりますが、設定は下記の通り。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サーバー検証をオンにするために必要なこと](https://solomon-review.net/construct-softether-vpn-21/)」の記事の設定を行ったことで、iPhoneのSSTP ConnectでTLSサーバ検証がオンになり、よりセキュアな通信が可能になります。

## 2023/2/8追記

- "hogefuga.softether.net"はport5555（今回の場合）
- "hogefuga.vpnazure.net"はport443

でそれぞれ接続できるようです。
ルータをいじれなくても、port443はSSL/TLS通信のポートなので、ほとんどの場合開いており、問題なく使えます。
なので、ルータの設定を変更できない場合は、後者が選択肢として上がりそうでした。
hostnameとportの組み合わせは、[ポート疎通確認方法](https://qiita.com/seaka829/items/ded68d0fa0bf0a57e973)で確認しました。

| port | hogefuga.softether.net | hogefuga.vpnazure.net |
| :------: | :---: | :---: |
| 5555 | ◯ |　×　|
| 443 | × |　◯　|