Не так давно я столкнулся с проблемой подключения к vpn при помощи аппаратного usb-токена. Мне предоставили инструкцию, но оказалось, что она актуальна только для Windows, а у меня на ноуте Ubuntu.
Прежде, чем мне успешно удалось подсоединиться к серверу, было потрачено достаточное количество времени и некоторый объем нервных клеток. Так что, если вы оказались в схожей ситуации, мой опыт, возможно, вам поможет.
Итак, исходные данные:
sudo apt updat
sudo apt install opensc opensc-pkcs11 pcscd
sudo apt-get install openvpn
openvpn --show-pkcs11-ids
Копируем Serialized id нужного нам сертификата.
Если openvpn --show-pkcs11-ids говорит, что слоты отсутствуют, необходимо проверить подключение смарт-карты:
opensc-tool -l
В случае ответа, что ключ-карта отсутствует, надо проверить запущен ли демон pcscd:
sudo service pcscd status
и включить его при необходимости:
sudo service pcscd start
Распаковываем как .tar.gz в подходящую папку и открываем файл config.conf.
Делаем замену {path} в строке pkcs11-providers {path}:
pkcs11-providers /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Следующей строкой добавляем:
pkcs11-id '{Serialized id из прошлого пункта}'
Сохраняем файл.
Вводим pin при запросе. Всё, мы в сети.
sudo systemctl enable pcscd
Но при этом Ubuntu включает вход в систему по смарт-карте, что мне было не нужно. Возможно, как-то можно этот момент обойти, но я решил проблему простой командой в .bash_aliases, которую запускаю, если хочу подключиться к vpn.
.bash_aliases
alias vpn="cd ~/.vpn; sudo service pcscd start; sudo openvpn --config config.conf"
P.S. Некоторые материалы, на которые опирался при поиске решения:
Прежде, чем мне успешно удалось подсоединиться к серверу, было потрачено достаточное количество времени и некоторый объем нервных клеток. Так что, если вы оказались в схожей ситуации, мой опыт, возможно, вам поможет.
Итак, исходные данные:
- usb-токен с предустановленными сертификатами
- Файл конфигурации подключения с расширением .visz(такие генерирует Velocity - vpn клиент для windows и MacOS)
- Ubuntu 22.04 на клиентском (моем) компьютере
- Как использовать предоставленную конфигурацию для подключения?
- Как дать возможность системе видеть смарт-карты?
- Как собственно подключаться к vpn?
Устанавливаем библиотеки
Нам понадобятся несколько библиотек для работы с токенами:sudo apt updat
sudo apt install opensc opensc-pkcs11 pcscd
- opensc, opensc-pkcs11: набор библиотек и утилит для доступа к смарт-картам и токенам
- pcscd: менеджер ресурсов, координирующий связь с токенами, либо с устройствами считывания смарт карт
sudo apt-get install openvpn
Проверяем, все ли работает
Узнаем ID контейнера, в котором на смарт-карте хранятся ключ и сертификат:openvpn --show-pkcs11-ids
Копируем Serialized id нужного нам сертификата.
Если openvpn --show-pkcs11-ids говорит, что слоты отсутствуют, необходимо проверить подключение смарт-карты:
opensc-tool -l
В случае ответа, что ключ-карта отсутствует, надо проверить запущен ли демон pcscd:
sudo service pcscd status
и включить его при необходимости:
sudo service pcscd start
Настраиваем openvpn конфигурацию
Следующим шагом возвращаемся к предоставленной нам конфигурации (.visz).Распаковываем как .tar.gz в подходящую папку и открываем файл config.conf.
Делаем замену {path} в строке pkcs11-providers {path}:
pkcs11-providers /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
Следующей строкой добавляем:
pkcs11-id '{Serialized id из прошлого пункта}'
Сохраняем файл.
Подключаемся
sudo openvpn --config config.confВводим pin при запросе. Всё, мы в сети.
Примечание
Логичным шагом было бы ещё запускать pcscd как службу:sudo systemctl enable pcscd
Но при этом Ubuntu включает вход в систему по смарт-карте, что мне было не нужно. Возможно, как-то можно этот момент обойти, но я решил проблему простой командой в .bash_aliases, которую запускаю, если хочу подключиться к vpn.
.bash_aliases
alias vpn="cd ~/.vpn; sudo service pcscd start; sudo openvpn --config config.conf"
P.S. Некоторые материалы, на которые опирался при поиске решения:
Подключение к vpn через yubikey на ubuntu
Не так давно я столкнулся с проблемой подключения к vpn при помощи аппаратного usb-токена. Мне предоставили инструкцию, но оказалось, что она актуальна только для Windows, а у меня на ноуте Ubuntu....
habr.com