「Ubuntu (x86_64) のデスクトップ環境からFortinet VPNへ接続する際に、Fortinetの公式クライアントFortiClient VPNを使わず、オープンソースなものを使ってみた」という内容のメモです。ちょっとだけ逸般の誤家庭にとって参考になるかもしれません。
SSL-VPN接続に必要な最小限の設定情報を見極めるため、まずは最初に比較的シンプルな、コマンドラインでのVPN接続を試します。
$ sudo apt install openfortivpn
$ openfortivpn --version
1.17.1
CLIENT.p12
(PKCS #12) が配布されていたら、クライアント証明書からユーザ証明書 USER.crt.pem
とユーザ鍵 USER.key.pem
を取り出す (参考ページ)## ユーザ証明書
$ openssl pkcs12 -in CLIENT.p12 -out USER.crt.pem -clcerts -nokeys -legacy
Enter Import Password:(Import Passwordを入力)
## ユーザ鍵
$ openssl pkcs12 -in CLIENT.p12 -out USER.key.pem -nocerts -nodes -legacy
Enter Import Password:(Import Passwordを入力)
## 参考: 私の環境の場合、opensslコマンドに「-legacy」を付けない場合には次のエラーが発生した
$ openssl pkcs12 -in CLIENT.p12 -out USER.crt.pem -clcerts -nokeys
Enter Import Password:(Import Passwordを入力)
Error outputting keys and certificates
4087D00B827F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()
$ sudo openfortivpn 接続先IPアドレス:接続先ポート番号 -u VPNユーザ名 --user-cert=USER.crt.pem --user-key=USER.key.pem
VPN account password: (パスワードを入力)
ERROR: Gateway certificate validation failed, and the certificate digest is not in the local whitelist. If you trust it, rerun with:
ERROR: --trusted-cert XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ERROR: or add this line to your configuration file:
ERROR: trusted-cert = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(snip)
--trusted-cert=XXXXX...
」を追加した上でVPN接続を試してみる$ sudo openfortivpn 接続先IPアドレス:接続先ポート番号 -u VPNユーザ名 --user-cert=USER.crt.pem --user-key=USER.key.pem --trusted-cert=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VPN account password: (パスワードを入力)
INFO: Connected to gateway.
INFO: Authenticated.
INFO: Remote gateway has allocated a VPN.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
INFO: Got addresses: [XXX.XXX.XXX.XXX], ns [XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX]
INFO: Negotiation complete.
INFO: Negotiation complete.
local IP address XXX.XXX.XXX.XXX
remote IP address XXX.XXX.XXX.XXX
INFO: Interface ppp0 is UP.
INFO: Setting new routes...
INFO: Adding VPN nameservers...
INFO: Tunnel is up and running.
^CINFO: Cancelling threads...
(snip)
openfortigui_0.9.8-1_amd64_jammy.deb
$ sudo dpkg -i ./openfortigui_0.9.8-1_amd64_jammy.deb
$ sudo apt --fix-broken install # 必要に応じて
SUDO -E Option: SUDO Preserve Env. (>=Ubuntu 19.10/Debian10 Fix)
をONにして [保存] する試してはいないが、下記リンク先で紹介されているやり方だと、元々あるデスクトップ環境のNetwork Managerと融合させることもできるのかもしれません。