iOS と互換性のある SoftEther サーバー証明書の作成について
最高レベルのセキュリティを確保するために、パブリック認証局によって署名された証明書を使用することをお勧めします。Let's Encrypt などの無料サービスからも入手できます。
パブリック CA 証明書が機能しない場合にのみ、自己署名証明書を使用してください。ただし、SoftEther VPN Server によって自動的に作成された証明書は iOS 13 の要件を満たしていないため、このガイドに従って証明書を再作成する必要があります。
TLS サーバー検証はサーバー管理者向けの高度なトピックです。行った変更とその結果については、すべて自己責任になります。
ご理解の上お進みください。
概要
このガイドでは二つの証明書を作成します。まずルート証明書を作成し、それを使用してサーバー証明書(リーフ証明書)を作成します。VPN サーバーに直接使用されるのはサーバー証明書のほうです。
前提条件
-
SoftEther VPN Server 4.25 Build 9656 以降(古いバージョンは iOS と互換性のある証明書を作成できません)
-
SE-VPN サーバー管理マネージャ(GUI)または vpncmd(コマンドライン)で VPN サーバー管理モードにアクセスできる
VPN サーバー管理マネージャの手順
-
VPN サーバー管理モードに接続します
-
「暗号化と通信関係の設定」を開きます
-
「サーバー証明書」の「新規作成」をクリックします
-
「ルート証明書」を選択し、証明書情報を入力します
- 名前:任意(ただし、サーバーホスト名以外のもの)
- 有効期間:3650 日(デフォルト)または任意の値
- 暗号強度:2048 bits
-
「OK」をクリックします。作成した証明書がサーバー証明書の欄に表示されます。
-
「エクスポート」をクリックし、X509 証明書と秘密鍵ファイルをエクスポートします。
秘密鍵を安全な場所に保存し、他人に絶対渡さないでください。
-
ここからはサーバー(リーフ)証明書を作成します。「新規作成」をクリックします。
-
「他の証明書によって署名された証明書」を選択します
-
「証明書と秘密鍵の読み込み」をクリックし、先エクスポートした証明書と秘密鍵を読み込みます
-
サーバー証明書情報を入力します
- 名前:サーバーホスト名(例えば SoftEther DDNS ホスト名)
- 有効期間:730 日(825 日以下の日数であればよい)
- 暗号強度:2048 bits
-
「OK」をクリックし、「新しい証明書の作成」を閉じます
-
新しいサーバー証明書がサーバー証明書の欄に表示されます。それをエクスポートする必要はありません。
-
「OK」をクリックし、「暗号化と通信関係の設定」を閉じます。VPN 管理マネージャが OpenVPN 接続を行う場合ルート証明書をインストールする必要があるということを提示します。
-
(任意)エクスポートしたルート証明書(秘密鍵ではない)をサーバーの
chain_certs
フォルダーにコピーします。OpenVPN 接続が必要としない場合はこれをする必要がありません。 -
ルート証明書(秘密鍵ではない)を Web サイトにアップロードするか、自分宛てのメールで送信します。そして Apple のガイドに従って、iOS デバイスにルート証明書をインストールして信頼します。
インストールするには:https://support.apple.com/ja-jp/HT209435
-
サーバー証明書の有効期限(たとえば 730 日)が切れると、以上のプロセスで新しいサーバー証明書を生成してください。ルート証明書が有効期限が切れていない限り、同じものを再利用できます。
vpncmd の手順
-
サーバー管理モードにログインします
-
makecert2048
を実行し、ルート証明書情報を入力します- 名前 (CN):任意(ただし、サーバーホスト名以外のもの)
- 有効期限 (日):3650 日(デフォルト)または任意の値
ルート証明書と秘密鍵のファイルネームを指定します。
秘密鍵を安全な場所に保存し、他人に絶対渡さないでください。
例:
VPN Server>makecert2048 MakeCert2048 コマンド - 新しい X.509 証明書と秘密鍵の作成 (2048 bit) 作成する証明書の名前 (CN): debian 作成する証明書の所属機関 (O): 作成する証明書の組織単位 (OU): 作成する証明書の国 (C): 作成する証明書の都道府県 (ST): 作成する証明書のローカル (L): 作成する証明書のシリアル番号 (16 進数): 作成する証明書の有効期限 (日): 3650 作成した証明書を保存するファイル名: /root/debian.cer 作成した秘密鍵を保存するファイル名: /root/debian.key コマンドは正常に終了しました。
-
makecert2048 /SIGNCERT:<ルート証明書ファイル> /SIGNKEY:<秘密鍵ファイル>
を実行し、ルート証明書情報を入力します- 名前 (CN):サーバーホスト名(例えば SoftEther DDNS ホスト名)
- 有効期限 (日):730 日(825 日以下の日数であればよい)
サーバー証明書と秘密鍵のファイルネームを指定します。
秘密鍵を安全な場所に保存し、他人に絶対渡さないでください。
例:
VPN Server>makecert2048 /signcert:/root/debian.cer /signkey:/root/debian.key MakeCert2048 コマンド - 新しい X.509 証明書と秘密鍵の作成 (2048 bit) 作成する証明書の名前 (CN): vpn123456789.softether.net 作成する証明書の所属機関 (O): 作成する証明書の組織単位 (OU): 作成する証明書の国 (C): 作成する証明書の都道府県 (ST): 作成する証明書のローカル (L): 作成する証明書のシリアル番号 (16 進数): 作成する証明書の有効期限 (日): 730 作成した証明書を保存するファイル名: /root/server.cer 作成した秘密鍵を保存するファイル名: /root/server.key コマンドは正常に終了しました。
-
servercertset
を実行し、サーバー証明書と秘密鍵のファイルネームを入力します。ルート証明書ファイルを使用しないでください。例:
VPN Server>servercertset ServerCertSet コマンド - VPN Server の SSL 証明書と秘密鍵の設定 読み込む X.509 証明書のファイル名: /root/server.cer 読み込む秘密鍵のファイル名: /root/server.key コマンドは正常に終了しました。
-
(任意)エクスポートしたルート証明書(秘密鍵ではない)をサーバーの
chain_certs
フォルダーにコピーします。OpenVPN 接続が必要としない場合はこれをする必要がありません。 -
ルート証明書(秘密鍵ではない)を Web サイトにアップロードするか、自分宛てのメールで送信します。そして Apple のガイドに従って、iOS デバイスにルート証明書をインストールして信頼します。
インストールするには:https://support.apple.com/ja-jp/HT209435
-
サーバー証明書の有効期限(たとえば 730 日)が切れると、以上のプロセスで新しいサーバー証明書を生成してください。ルート証明書が有効期限が切れていない限り、同じものを再利用できます。