今まで出来なかったのは、コメントアウトをはずし忘れる凡ミスでした…。
というわけで、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のラベルを追加しておきます。


