我为 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。