Juniper 模式下的 Openconnect 突然失败,并显示“无法获取 WebVPN cookie”

Juniper 模式下的 Openconnect 突然失败,并显示“无法获取 WebVPN cookie”

我已经在 Ubuntu 16.04 LTS 上使用 Openconnect 成功连接到我的 VPN 一段时间了,使用以下选项调用 Juniper 支持并设置 SOCKS5 隧道

(请注意,真正的 VPN URL 已被替换为 vpn.company.com)

openconnect --juniper 
            --script-tun --script "/usr/bin/ocproxy -D 11080"  
            --cafile=/etc/ssl/certs/vpn1.company.com.der
            https://vpn.company.com

午餐后重新启动后,我无法再重新连接,而是收到了以下以错误结尾的记录:

WARNING: Juniper Network Connect support is experimental.
It will probably be superseded by Junos Pulse support.
GET https://vpn.company.com/
Attempting to connect to server XXX.XXX.XXX.XXX:443
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
Got HTTP response: HTTP/1.1 302 Found
GET https://vpn.company.com/dana-na/auth/url_default/welcome.cgi
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
frmLogin
GET https://vpn.company.com/dana-na/auth/url_default/welcome.cgi
SSL negotiation with vpn.company.com
Connected to HTTPS on vpn.company.com
frmLogin
Failed to obtain WebVPN cookie

网络支持团队并未意识到他们的 Juniper VPN 存在任何问题,但我突然甚至没有看到密码提示。

答案1

解决方案是手动升级 Openconnect。

通过apt-get install --upgrade-only openconnect,我确认我已经使用的是最新版本(7.06-2build2)

下载了最新版本(7.08)和手动构建。由于该vpnc-scripts软件包将 vpnc-script 放在与默认位置不同的位置,因此我需要提供该信息configure。我也不介意缺少 DTLS 支持,因此告诉它只使用我当前的 openssl 版本:

./configure --with-vpnc-script=/usr/share/vpnc-scripts/vpnc-script --without-openssl-version-check

以及添加一些构建所需的缺失包-就我而言libxml2,,libxml2-devpkg-config

最后,由于 Xenial 软件包使用了 GnuTLS,但我的构建使用的是 OpenSSL,因此它无法将证书文件读取为 .der 并得到一个Failed to open CA file。通过将其转换为 .pem(OpenSSL 默认值)解决了此问题:

openssl x509 -in /etc/ssl/certs/vpn1.company.com.der -inform der 
             -out /etc/ssl/certs/vpn1.company.com.pem -outform pem

我怀疑 VPN 服务器端发生了变化,开始发送“登录前消息”,现在7.08 版支持

相关内容