strongSwan IKEv2 + Windows 7 Agile VPN:是什么引起错误13801


8

我有一个想成为VPN服务器的AWS实例。它将Windows 7客户端连接到Amazon云中的专用网络。

  • 我已经安装了Ubuntu 12.04和strongswan-ikev2软件包。
  • ipsec version 报告 Linux strongSwan U4.5.2/K3.2.0-52-virtual
  • 请注意,客户端和服务器都在NAT后面(客户端是因为它在本地办公网络上,而服务器是因为它在亚马逊的云中)。我在Amazon仪表板和客户端防火墙上均已解除阻止UDP端口500和4500。
  • 这是/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可以对服务器进行身份验证。

然后,我尝试按照此处规定使用Windows 7客户端连接到服务器,但有一个例外-我使用的是DNS名称而不是IP地址。我在ipsec.secrets文件中输入用户名,域和密码,然后尝试连接。

这样做时,我会得到如下所示的strongSwan日志。为了审查和清晰起见,我对此稍加思索。CLIENTPUB / CLIENTPRIV是客户端的公用和专用IP地址,而AMAZONPRIV是服务器的专用IP地址(这是服务器的公用IP(Amazon称为“弹性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立即弹出错误消息:

Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable

几秒钟后,charon再次尝试,然后关闭连接。

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上的所有说明

我在这里做错了什么?

编辑:这绝对是证书的问题。我通过编辑注册表并按照MSKB926182中的说明重新启动来禁用扩展的验证检查(如果您需要链接,请大声笑),现在我可以毫无错误地连接到我的VPN服务器。我将弄清楚如何生成满足要求的证书并添加答案。感谢@ecdsa提供了指向StrongSwan Wiki上的cert页面的指针,它使我获得了正确的方向。


Windows 7客户端上VPN属性的“安全性”选项卡是什么样的?另外,虽然我的设置不完全相同,但是我让IKEv2使用“当前用户”证书存储中的证书。
0xFE

您的服务器证书是否满足所有要求
ecdsa 2013年

如果您解决了自己的问题,请考虑在下面发布答案并将其标记为已解决。
迈克尔·汉普顿

Answers:


6

想通了。@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身份验证凭据不可接受”,这听起来像我的用户凭据无效。但是,这是一条有关服务器身份验证的消息,这是通过服务器的SSL证书(根据我的配置)完成的。Microsoft已发布有关IKEv2 VPN连接故障排除的文档,其中列出了导致此错误的可能原因:

  • 证书已过期。
  • 客户端上不存在证书的受信任根。
  • 证书的使用者名称与远程计算机不匹配。
  • 证书没有分配必需的增强密钥用法(EKU)值。

就我而言,我的问题与EKU值有关。按照我在顶部链接的指南,我能够生成具有正确EKU值的证书,并且效果很好。

要解决此问题,您可以在Windows客户端上禁用EKU检查(当然,这仅应在测试中完成):

  • 发射 regedit
  • 导航 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • 添加一个名为的DWORD DisableIKENameEkuCheck,并将其值设置为1
  • Microsoft文档指示执行此操作后重新启动,但是我不需要重新启动即可生效。

另一个可能的原因:cert中使用IP,但客户端使用主机名。
拉森

或主机名在证书中,但客户端连接到其IP地址。解决方案:ipsec pki --isue ... --san @ipaddress
bouke '17

完成这些步骤后,最终我的问题是受信任的根目录安装在错误的位置,它应该位于“计算机\受信任的根证书颁发机构”中,而不是在“当前用户\ TRCA”中。
bouke

2

我遇到了一个相同的问题,并通过确保我在证书文件中包含证书链(端实体证书,中间CA,根CA-按此顺序)来解决了该问题。TLS很有趣。

重新启动strongSwan之后,此操作停止工作,但是当我将中间CA和根CA放入时,它又开始工作/etc/ipsec.d/cacerts


0

经过长时间的搜索,该线程使我的Windows Phone 10(WP10)配置与IKEv2一起使用!要提到的一件事可能是您必须使用--enable-eap-identity --enable-eap-mschapv2 --enable-openssl(可能还有--enable-dhcp)./配置您的Strongswan以具有必要的插件。是的,您需要正确获取证书(在服务器端-客户端只需要知道服务器的根CA)即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.