Openconnect в режиме Juniper неожиданно завершается с ошибкой "Не удалось получить cookie WebVPN"
Я использовал Openconnect на Unbutu 16.04 LTS для успешного подключения к моей VPN в течение достаточно долгого времени, используя следующие опции для вызова поддержки Juniper и настройки туннеля SOCKS5.
(Обратите внимание, что реальный URL-адрес VPN был заменен на 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-скрипт в другое место, чем по умолчанию, мне нужно было предоставить эту информацию configure, Я также не заботился об отсутствии поддержки DTLS, поэтому сказал, чтобы я просто использовал мою текущую версию openssl:
./configure --with-vpnc-script=/usr/share/vpnc-scripts/vpnc-script --without-openssl-version-check
а также добавить несколько недостающих пакетов, необходимых для сборки - в моем случае libxml2, libxml2-dev, а также pkg-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.