strongswan 高版本已支持ikev2,ios9.0以上版本的支持ikev2,Android也是高版本的部分机型支持ikev2,本人搭建的基于ikev2交换协议的strongswan VPN服务器对与iOS 是免证书的(iOS VPN客户端自己写的),Android (VPN客户端是stongswan 官网提供的客户端)服务器认证是证书,客户端认证是eap模式配置文件如下
1.生成服务器证书
生成CA证书
生成私钥
ipec pki --gen --outform pem >ca.pem
--putfom 一共有三种形式,另两种是der 和 pgp
基于这个私钥生成一个CA证书
ipsec pki --self --in ca.pem --dn "C=chaina,O=strongswn ,CN=strongswan CA" --ca --outform pem >ca.cert.pem
--self是私钥 --in是输入私钥,--dn 是判别名,--ca 是证书
C:表示国家
O:表示州
CN:表示通用名
生成服务器证书
生成私钥
ipsec pki --gen --outform > server.pem
生成服务器证书
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=china,O=strongswan,CN=forum.org.cn " --san="forum.org.cn" --flag serverAuth --flag ikeIntermediate --outform pem >server.cert.pem
ipsec pki --pub --in server.pem
这句话的意思是从私钥里把公钥提取出来
--issue /--cacert/--cakey就是表明用刚才自签的CA证书来签这个服务器证书
--db/--san /--flag是一些客户端的特殊要求
Ios客户端要求CN(通用名)必须是你的服务器的URL或IP地址
Windows7不但要求了上面,还要求必须显示说明这个服务器证书的用途(用于服务器证书)--flag serverAuth;
非 iOS的 Mac OS X要求了「IP安全网络密钥互换居间(IP Security IKE Intermediate)」这种增强型密钥用法(EKU),--flag ikdeIntermediate;
Android和 iOS 都要求服务器别名(serverAltName)就是服务器的 URL或 IP 地址,--san。