使用 lets-encrypt 证书 (IKEv2-EAP) 将多个远程 Windows 10 客户端连接到 Strongswan 时出现问题

使用 lets-encrypt 证书 (IKEv2-EAP) 将多个远程 Windows 10 客户端连接到 Strongswan 时出现问题

我为 VPN 客户端设置了一个 Strongswan 服务器,用于访问内部网络 (EAP-IKEv2)。我已使用 Letsencrypt 服务器证书成功配置了它,它适用于使用 Mac OS X、IOS、Winodws 7 和 Windows 10 的客户端。

一年来一切都运行良好

但几周前,几个使用 Windows 10 的远程客户端在连接过程中开始出现错误

服务器:FreeBSD 11.2-RELEASE-p15 上的 Strongswan 版本 5.8.2 客户端:Mac OS X(多个版本)/ IOS(多个版本)/ Windows 7(多个版本)/ Windows 10(多个版本)

Windows 10 VPN 错误:13801:IKE 身份验证凭据不可接受错误

同时,其他远程客户端(包括使用相同版本号的 Windows 10 的客户端)运行正常。

最可悲的是,该错误与 Windows 10 的内部版本号无关

当然证书是延期和有效的

您可以在下面找到所有详细信息。

感谢您的时间。如果您能提供任何帮助,我将不胜感激

ipsec配置文件

  config setup
  strictcrlpolicy=no
  charondebug="ike 1, knl 1, cfg 0"
  uniqueids=no

conn ikev2-vpn
  auto=add
  compress=no
  type=transport
  keyexchange=ikev2
  fragmentation=yes
  forceencaps=yes

  ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha2
  esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1

  dpdaction=clear
  dpddelay=300s
  rekey=no

  left=%any
  [email protected]
  leftcert=fullchain.pem
  leftsendcert=always
  leftsubnet=0.0.0.0/0

  right=%any
  rightid=%any
  rightauth=eap-mschapv2
  rightsourceip=192.168.20.2-192.168.20.50
  rightdns=192.168.70.253,192.168.70.254

  eap_identity=%identity

charon.log 的最后一部分

Jun 23 09:12:17 11[MGR] <ikev2-vpn|10> checkin IKE_SA ikev2-vpn[10]
Jun 23 09:12:17 03[NET] sending packet: from *serverip*[4500] to *clientip*[4500]
Jun 23 09:12:17 11[MGR] <ikev2-vpn|10> checkin of IKE_SA successful
Jun 23 09:12:17 03[NET] sending packet: from *serverip*[4500] to *clientip*[4500]
Jun 23 09:12:46 06[NET] waiting for data on sockets
Jun 23 09:12:46 01[JOB] got event, queuing job for execution
Jun 23 09:12:46 01[JOB] next event in 628ms, waiting
Jun 23 09:12:46 11[MGR] checkout IKEv2 SA with SPIs 688d0386698d3362_i b3e60629dc447607_r
Jun 23 09:12:46 11[MGR] IKE_SA checkout not successful
Jun 23 09:12:47 01[JOB] got event, queuing job for execution
Jun 23 09:12:47 01[JOB] next event in 98s 38ms, waiting
Jun 23 09:12:47 11[MGR] checkout IKEv2 SA with SPIs ef71603dd0f2ce38_i 6e86dbaeb491d377_r
Jun 23 09:12:47 11[MGR] IKE_SA ikev2-vpn[10] successfully checked out
Jun 23 09:12:47 11[JOB] <ikev2-vpn|10> deleting half open IKE_SA with *clientip* after timeout
Jun 23 09:12:47 11[MGR] <ikev2-vpn|10> checkin and destroy IKE_SA ikev2-vpn[10]
Jun 23 09:12:47 11[IKE] <ikev2-vpn|10> IKE_SA ikev2-vpn[10] state change: CONNECTING => DESTROYING
Jun 23 09:12:47 11[MGR] checkin and destroy of IKE_SA successful

答案1

我遇到了同样的问题,通过将最新的 Let's Encrypt 根 CA 证书添加到本地计算机证书存储。

不能保证这是您遇到的问题,但它帮我解决了/etc/ipsec/cacerts这个问题。我也将同一证书的 PEM 版本添加到 VPN 服务器上的目录中,但这本身并没有解决问题。

以下是将根证书安装到本地 Windows 证书存储区的 PowerShell 脚本:

    Write-Host " Fetching Lets Encrypt root CA Cert..." -ForegroundColor Cyan
    $output = "isrgrootx1.der"
    $configUrl = "https://letsencrypt.org/certs/isrgrootx1.der"
    Invoke-WebRequest -Uri $configUrl -OutFile $output
    Import-Certificate -FilePath "$output" -CertStoreLocation 'Cert:\LocalMachine\Root'-Verbose

答案2

我遇到了同样的问题,@StampyCode 提供的 powershell 脚本有效,但用户只需访问https://valid-isrgrootx1.letsencrypt.org/在机器上激活 ISRG Root X1 证书并解决问题。

如果您可以将脚本部署到您管理的多台机器上,那么该脚本是理想的选择,但对于个别情况,只需告诉用户访问该网站就容易得多,在这种情况下,Windows 会自动激活根证书。

我希望微软默认激活 ISRG Root X1。

相关内容