我有一个AWS实例,我想成为一个VPN服务器。 它将Windows 7客户端连接到亚马逊云中的专用networking。
strongswan-ikev2软件包。 ipsec version报告Linux strongSwan U4.5.2/K3.2.0-52-virtual 这是/etc/ipsec.conf:
config setup plutostart=no conn %default keyexchange=ikev2 ike=aes256-sha1-modp1024! esp=aes256-sha1! dpdaction=clear dpddelay=300s rekey=no conn win7vpn left=%any leftsubnet=<amazon VPC CIDR block> leftauth=pubkey leftcert=openssl-cert.pem leftid=<vpn server public dns name> right=%any rightsourceip=<amazon private IP address, which elastic ip is forwarded to> rightauth=eap-mschapv2 rightsendcert=never eap_identity=%any auto=add
这是/etc/ipsec.secrets:
: RSA openssl-key.rsa TESTDOMAIN\testuser : EAP "testpassword"
我已经将签署服务器主机证书的CA证书添加到本地机器(而不是用户)证书存储区,以便Windows可以对服务器进行身份validation。
然后我试着按照这里规定的方式使用Windows 7客户端连接到服务器,但有一个例外 – 我使用DNS名称而不是IP地址。 我在我的ipsec.secrets文件中input用户名,域和密码,并尝试连接。
当它发生时,我会看到像这样的strongSwan日志。 我为这两个审查和清晰消除了这一点, CLIENTPUB / CLIENTPRIV是客户端的公有和私有IP地址,AMAZONPRIV是服务器的私有IP地址(这是服务器的公有IP–亚马逊称之为“弹性IP” – 转发)。
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA Sep 4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500] Sep 4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ] Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA Sep 4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives Sep 4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT Sep 4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ] Sep 4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500] Sep 4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500] Sep 4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER Sep 4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ] Sep 4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA" Sep 4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca Sep 4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV] Sep 4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn' Sep 4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request Sep 4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE Sep 4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful Sep 4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com" Sep 4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ] Sep 4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
此时,Windows立即popup错误消息:
Verifying user name and password... Error 13801: IKE authentication credentials are unacceptable
几秒钟后,charon再次尝试,然后closures连接。
Sep 4 00:16:37 localhost charon: 16[IKE] sending keep alive Sep 4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500] Sep 4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout
就是这样。
据我所知,我遵循strongSwan wiki上的所有说明 。
我在这里做错了什么?
编辑:这肯定是证书的问题。 我通过编辑registry并重新启动禁用扩展的validation检查,如MSKB926182(如果你想要一个链接的话),我现在可以连接到我的VPN服务器没有错误。 我将弄清楚如何生成满足要求的证书并添加答案。 感谢@ecdsa指向strongSwan wiki上的证书页面,这让我指出了正确的方向。
想通了。 @ecdsa指出我正确的方向,我终于可以按照本指南解决问题。
ipsec pki --gen --type rsa --size 4096 --outform pem > vpnca.key.pem ipsec pki --self --flag serverAuth --in vpnca.key.pem --type rsa --digest sha1 \ --dn "C=US, O=Example Company, CN=Example VPN CA" --ca > vpnca.crt.der ipsec pki --gen --type rsa --size 4096 --outform pem > vpn.example.com.key.pem ipsec pki --pub --in vpn.example.com.key.pem --type rsa > vpn.example.com.csr ipsec pki --issue --cacert vpnca.crt.der --cakey vpnca.key.pem --digest sha1 \ --dn "C=US, O=Example Company, CN=vpn.example.com" \ --san "vpn.example.com" --flag serverAuth --outform pem \ < vpn.example.com.csr > vpn.example.com.crt.pem openssl rsa -in vpn.example.com.key.pem -out vpn.example.com.key.der -outform DER cp vpnca.crt.der /etc/ipsec.d/cacerts cp vpn.example.com.crt.pem /etc/ipsec.d/certs cp vpn.example.com.key.der /etc/ipsec.d/private
错误消息是“错误13801:IKE身份validation凭据不可接受”,这听起来像我的用户凭据不起作用。 但是,这是一个关于validation服务器的消息,这是通过服务器的SSL证书完成的(按照我的configuration)。 Microsoft发布了有关排除IKEv2 VPN连接故障的文档,其中列出了此错误的可能原因:
就我而言,我的问题与EKU值有关。 按照我在顶部链接的指南,我能够生成一个具有正确EKU值的证书,而且效果很好。
要解决这个问题,你可以禁用你的Windows客户端上的EKU检查(当然,这只能用于testing):
regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters DisableIKENameEkuCheck的DWORD,并将其值设置为1 我有一个相同的问题,并通过确保证书文件中的证书链(terminal实体证书,中间CA,根CA – 按顺序)解决了这个问题。 TLS很有趣。
重新启动strongSwan后,这个停止工作,但当我把中间和根CA放入/etc/ipsec.d/cacerts时,再次开始工作。
经过漫长的search,这个线程得到了我的Windows Phone 10(WP10)configuration与IKEv2工作! 有一件事要提的可能是你必须使用–enable-eap-identity –enable-eap-mschapv2 –enable-openssl(可能是–enable-dhcp)./configure你的Strongswan来拥有必要的插件。 是的,你需要获得正确的证书(在服务器端 – 客户端只需要知道服务器的根CA)。