今まで出来なかったのは、コメントアウトをはずし忘れる凡ミスでした…。
というわけで、IKEv2 で使えるクライアント証明書も更新しています。
各OSでIKEv2のVPN接続で使用できた認証方式と証明書と内容をまとめました。
ECDSA証明書でも問題なく証明書認証できるiPhoneは凄い!と感じました。
⇒WindowsでもECPを使用することで可能でした。
IPsec VPN 高セキュリティ&爆速? AES-GCM + ECP に変更した
IPsecをAES-GCMとECPを使うよう変更しました。作成・設定方法を記載しました。セキュリティ面、パフォーマンス面ともに良いとのこと。
環境
iPhone7 (iOS10.3.3)
strongSwan 5.6.2
strongSwan側
以下は、各設定ファイルです。環境に応じて変更して、ご使用ください。
また、今回はECDSA証明書を使用しています。RSAを使用する場合はご注意ください。
/etc/ipsec.conf
conn ios10-cert left=%defaultroute leftcert=server.pem leftsubnet=192.168.0.0/24 #leftfirewall=yes #lefthostaccess=yes leftsendcert=always leftid=vpn.example.com right=%any rightid="username" rightsourceip=192.168.255.0/24 keyexchange=ikev2 auto=add ike=aes256-sha256-modp2048! esp=aes256-sha256!
/etc/ipsec.secrets
: ECDSA server-private.key
iPhone側
iPhoneに設定をインストールするための構成プロファイル(mobileconfig, plist)を作成します。CertificateTypeという所で、証明書のタイプを指定します。
デフォルトはRSAで、今回はECDSAの証明書なので、ECDSA384を指定しています。
(ここをコメントアウトしていて今までハマってしました…)
プロファイルの最後の方のMIIから始まる部分は、Base64 (PEM)の証明書内容を貼り付けます。
最初の方は、クライアント証明書(pkcs12)です。
後の方は、CA証明書です。
pkcs12ファイルのBase64 (PEM)変換は以下のコマンドで行えます。出力結果を貼り付けてください。
[root@Server ~]# openssl enc -base64 -in clientcert.p12 MII************************************************************* (省略) ****************************************
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadDisplayName</key> <string>Strongswan</string> <key>PayloadIdentifier</key> <string>com.example.vpn</string> <key>PayloadUUID</key> <string>9f93912b-5fd2-4455-99fd-13b9a47b4581</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadContent</key> <array> <dict> <key>PayloadIdentifier</key> <string>com.example.vpn.conf1</string> <key>PayloadUUID</key> <string>29e4456d-3f03-4f15-b46f-4225d89465b7</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <key>PayloadVersion</key> <integer>1</integer> <key>UserDefinedName</key> <string>Machine Ceritificate</string> <key>VPNType</key> <string>IKEv2</string> <key>IKEv2</key> <dict> <key>RemoteAddress</key> <string>vpn.example.com</string> <key>RemoteIdentifier</key> <string>vpn.example.com</string> <key>LocalIdentifier</key> <string>username</string> <key>ServerCertificateIssuerCommonName</key> <string>vpn.example.com</string> <key>ServerCertificateCommonName</key> <string>vpn.example.com</string> <key>AuthenticationMethod</key> <string>Certificate</string> <key>ExtendedAuthEnabled</key> <integer>0</integer> <key>PayloadCertificateUUID</key> <string>d60488c6-328e-4944-9c8d-61db8095c864</string> <key>CertificateType</key> <string>ECDSA384</string> <key>IKESecurityAssociationParameters</key> <dict> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>DiffieHellmanGroup</key> <integer>14</integer> </dict> <key>ChildSecurityAssociationParameters</key> <dict> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>DiffieHellmanGroup</key> <integer>14</integer> </dict> </dict> </dict> <dict> <key>PayloadIdentifier</key> <string>com.example.vpn</string> <key>PayloadUUID</key> <string>d60488c6-328e-4944-9c8d-61db8095c864</string> <key>PayloadType</key> <string>com.apple.security.pkcs12</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadContent</key> <data> MII************************************************************* (省略) **************************************** </data> </dict> <dict> <key>PayloadIdentifier</key> <string>com.example.vpn</string> <key>PayloadUUID</key> <string>64988b2c-33e0-4adf-a432-6fbcae543408</string> <key>PayloadType</key> <string>com.apple.security.pem</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadContent</key> <data> MII************************************************************* (省略) **************************************** </data> </dict> </array> </dict> </plist>
上記をテキストファイルに貼り付け、strongswan.mobileconfig というファイル名で保存し、 iPhoneにメールなどで転送します。
あとは、iPhoneでプロファイルをインストールします。
途中、パスワードを聞かれますが、pkcs12ファイルのパスワードを入力してください。
iPhoneでEAP-MSCHAPv2接続した時の記事はこちら。
iPhoneで strongSwan (IPsec VPN) に接続する (EAP-MSCHAPv2)
iPhoneでstrongSwanにEAP-MSCHAPv2で接続する設定を記載しています。
追記
2018/10/14
iPhone XS iOS12.0.1でも問題なく接続できています。2018/11/24
macOS MojaveでもこのプロファイルでVPN接続できましたので、macOSのラベルを追加しておきます。