1

На моем рабочем столе Cinnamon (linux) я настроил VPN-соединение openconnect в NetworkManager. При подключении у меня вроде нет проблем: соединение установлено и через него маршрутизируется сетевой трафик. Тем не менее, мой системный журнал содержит тревожную запись:

openconnect[2935]: SSL negotiation with (...)
openconnect[2935]: Server certificate verify failed: signer not found
openconnect[2935]: Connected to HTTPS on (...)
openconnect[2935]: Got CONNECT response: HTTP/1.1 200 OK

Я попытался использовать openconnect из командной строки, и он ничего не печатает о проблемах с сертификатами (даже в подробном режиме). Кроме того, нет ошибок сертификата с сайтом в Firefox или при использовании wget (я понятия не имею, какое хранилище сертификатов использует openconnect ...).

Означает ли это, что соединение подвержено атакам типа «человек посередине»? Если сертификат не может быть проверен, почему нет запроса на подтверждение, который просит меня доверять сертификату перед подключением и отправкой учетных данных? Почему проблема возникает только при подключении с помощью NetworkManager?

Командная строка openconnect есть

/usr/sbin/openconnect --servercert sha1:bee140657db50a73ee69f47fee9e4d670905206e --syslog --cookie-on-stdin --script /usr/lib/NetworkManager/nm-openconnect-service-openconnect-helper --interface vpn0 (ip):443

Предупреждение также присутствует, если я не установил явно сертификат CA в NetworkManager.

2 ответа2

2

Эта проблема все еще присутствует в Ubuntu 18.04 с network-manager-openconnect .

Я думаю, что проблема заключается в том, что соединение устанавливается с IP-адресом VPN-сервера, а не с его DNS-именем:

$ ps aux | grep openconnect
/usr/sbin/openconnect --servercert sha256:<hash> --syslog --cookie-on-stdin --script /usr/lib/NetworkManager/nm-openconnect-service-openconnect-helper --interface vpn0 <ip>:443

Запустите команду вручную, без параметра --servercert:

$ /usr/sbin/openconnect <ip>:443 --authenticate
POST https://<ip>/
Connected to <ip>:443
SSL negotiation with <ip>
Server certificate verify failed: certificate does not match hostname
Certificate from VPN server "<ip>" failed verification.
Reason: certificate does not match hostname
To trust this server in future, perhaps add this to your command line:
   --servercert sha256:<hash>
Enter 'yes' to accept, 'no' to abort; anything else to view: 

Обратите внимание на сбой проверки сертификата.

Теперь используя имя хоста вместо IP:

$ /usr/sbin/openconnect <hostname>:443 --authenticate
POST https://<hostname>/
Connected to <ip>:443
SSL negotiation with <hostname>
Connected to HTTPS on <hostname>
XML POST enabled
Please enter your username and password.

Нет ошибок сертификата.

Теперь, используя IP с параметром servercert:

$ /usr/sbin/openconnect <ip>:443 --authenticate --servercert sha256:<hash>
POST https://<ip>/
Connected to <ip>:443
SSL negotiation with <ip>
Server certificate verify failed: signer not found
Connected to HTTPS on <ip>
XML POST enabled
Please enter your username and password.

Сравните ошибку с первым примером - это другая ошибка. Этот сбой, потому что подписавшая сторона не найдена. Учитывая, что мы просто указываем хеш, я думаю, это имеет смысл, поскольку нет цепочки доверия, которой нужно следовать.

Мне кажется, что основной причиной является то, что администратор сети по какой-то причине подключается к IP-адресу, а не к имени хоста. Не уверен, почему он это сделал?

0

У меня была та же проблема в Arch Linux с использованием networkmanager-connect и апплета network-manager. Я решил это, вручную загрузив сертификат CA:

echo -n | openssl s_client -connect <HOST>:<PORTNUMBER> \
| sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/vpn.crt

[источник]

А затем я выбрал этот файл в меню конфигурации VPN в настройках сети Gnome. Это добавляет следующую строку в файл конфигурации /etc/NetworkManager/system-connections/MyVpn.nmconnection:

[vpn]
...
cacert=/home/<my username>/vpn.crt

Это может изменить некоторые другие строки в файле конфигурации. Я не запускал diff, чтобы узнать. Но в любом случае, мне было позволено подключиться к моему vpn через Network Manager.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .