テレワークが増えたせいなのか、VPNの記事にアクセスが多いです・・・
証明書を使った二要素認証での接続方法をメモ
構成はこんな感じ。
SSL-VPNの接続時にユーザ名・パスワード + クライアント証明書(Common Nameもチェック)を行います。
証明書の発行はOpenSSLでの作成が面倒なので、Windowsのフリーソフト、k9pcaを使用します。
失効リスト等の置き場がないので、クライアント証明書の失効はしません。
証明書は端末で共有利用し、アカウント情報の有効・無効でユーザ制限します。
ベクターなどからダウンロードします。
アプリケーションはインストール不要で、exerファイルから起動します。
とりあえず同意。
デフォルトの値のまま。
先ずは「ルート認証局の構築」を選びます。
入力例が表示されるので、組織名や一般名称、有効期限を利用状況に合わせて変更します。
一般名称のところはCommon Nameになります。
次にサーバ証明書の作成を選択します。
ドメイン、パスワードを入力します。
ドメインはCommon Nameになります。適当で。
ドメインのところは半角のスペースを入れると、FortiClientでの接続時に繋がらなかったです。
パスワードはFortigateにインポートする際に必要になります。
鍵長はデフォルト1024になっているので、2048あたりに変更。
次に個人証明書の作成をします。
氏名のところがCommon Nameになります。
後述するFortigateのPKIユーザで、このCommon Nameが関係してきます。
パスワードはSSL-VPNクライアント端末にインポートする際のパスワードです。
鍵長さはデフォルト1024なので2048に変更。
k9pca Ver2.2 - certificate - 0001フォルダに証明書があります。
「1.cer」がCA証明書でFortigateにインポートします。
「1000.p12」がクライアント証明書で、SSL-VPNクライアント端末にインポートします。
「9000.pfx」がサーバ証明書で、Fortigateにインポートします。
「9000.pfx」だけ、Fortigateにインポート時、ファイル名が表示されるようになるので、分かりやすいファイル名に変更しておきます。「SSL-VPN Server Cert.pfx」など。
[システム]-[表示機能設定]から証明書を有効にします。
[証明書]のインポートから[CA証明書]を選択してインストールします。
[ファイル]を選択し、アップロードからCA証明書を選び[OK]を押してインストール。
エクスターナルCA証明書の所に「CA_Cert_1」で登録されます。
二つ目のCA証明書を入れた場合、「CA_Cert_2」になります。
[証明書]のインポートから[ローカル証明書]を選択してサーバ証明書インストールします。
PKCS12証明書を選択し、先ほどファイル名を変更したサーバ証明書をアップロードし、パスワードを入力します。
ここからはSSL-VPNに必要な設定を記述。
[ポリシー&オブジェクト]-[アドレス]でSSL-VPN配布時に利用するIPアドレスを設定します。
現在1.1.1.1のサーバが実際に運用されてしまっているので、192.0.2.xxxなど例示用のローカルアドレスを使ったほうがよいです。過去「1.1.1.1」問題で各国で大トラブルになりました。
SSL-VPNポータル設定時に、スプリットトンネルを有効にしていると、SSL-VPN用のポリシー作成で、宛先ローカルネットワークをanyが選択できません。
ローカルネットワークをアドレスで登録しておきます。
デフォルトのユーザ&デバイス。
SSL-VPN設定画面で、クライアント証明書を要求が有効になっている場合、[ユーザ定義」でユーザを設定すれば、SSL-VPN接続時に証明書が無いと接続できません。証明書のCommon Nameをチェックしない場合はこれでOK。
この後説明する、PKIユーザでは、サブジェクトに記載した文字列と、クライアント証明書で設定したCommon Nameが同一である必要があります。※どこかに前方一致でチェックと記載があった。
コマンドで以下を入力
# config user peer
(peer) # edit testuser1 ←ユーザ名
new entry 'testuser1' added
(testuser1) # set ca CA_Cert_1 ←CA証明書を選びます。
(testuser1) # set subject vpnuser ←クライアント証明書のCommon Name
(testuser1) # end
#
するとPKIの項目が表示されます。
ユーザーをダブルクリックして編集します。
二要素認証を有効にします。
ユーザグループに作成したユーザを追加します。
[VPN]-[SSL-VPNポータル]からtunnel-accessの設定を行います。
SSL-VPNクライアント端末がVPN接続時、インターネットの通信はVPN網を経由させたくないので、スプリットトンネリングを有効に。
宛先ネットワークはアドレスで作成したネットワークを指定。
[VPN]-[SSL-VPN設定]から接続時の設定を行います。
「クライアント証明書を要求」を有効にし、サーバ証明書には、インポートしたサーバ証明書を選びます。
認証ポータルマッピングの所も、設定が必要です。
作成したユーザグループを設定します。
[ネットワーク]-[スタティックルート]で、SSL-VPNトンネルインターフェース向けにスタティックルートを設定します。
ここからはSSL-VPNクライアント端末の設定。
クライアント証明書は「1000.p12」をダブルクリックするとインポートが開始されます。
証明書作成時に設定したパスワードを入力します。
FortiClientソフトはFortinateのサイトからダウンロードできるのインストールし、画面の様な感じで設定。リモートGWはFortigateのグローバルIPやDDNSを行っているならドメイン名を設定します。
クライアント証明書にインポートした証明書を選びます。
後は[接続]をクリックすれば完了。
8
Re:無題
こんばんは!
参考になって良かったです。
ponta2019
2022-08-15 20:41:07
返信する