strongSwan IKEv2 + Windows 7 Agile VPN:什么导致错误13801

我有一个AWS实例,我想成为一个VPN服务器。 它将Windows 7客户端连接到亚马逊云中的专用networking。

然后我试着按照这里规定的方式使用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值有关。 按照我在顶部链接的指南,我能够生成一个具有正确EKU值的证书,而且效果很好。

要解决这个问题,你可以禁用你的Windows客户端上的EKU检查(当然,这只能用于testing):

  • 启动regedit
  • 导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • 添加一个名为DisableIKENameEkuCheck的DWORD,并将其值设置为1
  • Microsoft文档指导您在完成此操作后重新启动,但是我不需要为了使其生效。

我有一个相同的问题,并通过确保证书文件中的证书链(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)。