Rutoken ЭЦП и vpn через l2tp и openssl

Добрый день.

Мой коллега snussi уже когда-то здесь задавал вопросы, связанные с использованием rutoken для vpn авторизации.

В общем, мы уже на нескольких дистрибутивах линукса эту цепочку отладили, хотя там определённое колдунство требуется. Используется взятый когда-то l2tpvpnmanager, но его пришлось допиливать.

В общем, если кто-то интересуется работой vpn с авторизации с использованием рутокена, могли бы наработки выложить. В конечном счете, доя пользователя все настраивается через gui.

Re: Rutoken ЭЦП и vpn через l2tp и openssl

Sander, здравствуйте! Будем рады опубликовать ваше руководство + кастомные  l2tpvpnmanager на портале http://dev.rutoken.ru.

Опубликуйте информацию здесь или отправьте на hotline@rutoken.ru.

(2020-05-05 17:39:29 отредактировано Sander)

Re: Rutoken ЭЦП и vpn через l2tp и openssl

Хорошо, я тогда начну выкладывать кусками здесь, но тут явно потребуется пересылать куски кода.

Начну с общего принципа, как это все заводится.
Моя текущая платформа - Ubuntu 20.04

Нужен именно ключ rutoken ЕЦП


1) =============================

Сначала ставим библиотеки и убеждаемся, что мы видим ключ

sudo apt-get install build-essential automake cmake libtool libltdl-dev libssl-dev libcrypto++-dev pkg-config libpcsclite-dev debhelper qt5-qmake qt5-default

lsusb

Должен появиться rutoken
Драйвера качаются с

https://www.rutoken.ru/support/download … b-x64.html

sudo dpkg -i ./librtpkcs11ecp_1.9.6.0-1_amd64.deb

Перезагрузка

Ставим утилиты, работающие со смарт-картами

apt-get install pcscd pcsc-tools opensc

Должны увидеть токен
pcsc_scan

https://www.rutoken.ru/manual/Rutoken_ECP_Linux.pdf

2) ==================================
Устанавливаем l2tp-ipsec-vpn (файлы будут в архиве). Пришлось серьезно допиливать в связи с апгрейдом openssl, qt4->5, переходом на pkexec. Это гуишная утилита, которая сидит в трее и позволяет интерактивно настраивать соединения и запускать их

Из пакетов понадобится
sudo apt-get install strongswan xl2tpd libctemplate3 libctemplate-dev libpam0g-dev libpcap0.8-dev

(и здесь будет сборка, должна проходить без проблем)

Также дадим файл, его нужно положить в
/usr/share/polkit-1/actions/org.freedesktop.policykit.L2tpIPsecVpn.policy

Он позволяет вызывать pkexec для повышения прав из гиушки

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/Po … config.dtd">
<policyconfig>
    <action id="org.freedesktop.policykit.L2tpIPsecVpn.gedit">
    <description>Run L2tpIPsecVpn program</description>
    <message>Authentication is required to run the L2tpIPsecVpn</message>
    <icon_name>L2tpIPsecVpn</icon_name>
    <defaults>
        <allow_any>auth_admin</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/L2tpIPsecVpn</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
    </action>
</policyconfig>

3) ==================================
l2tp-ipsec-vpn-daemon
Отвечает за перезапуск strongswan/xl2tpd и обновление их конфигурации

(и здесь будет сборка, должна проходить без проблем)

4) ===================================
libpksc11

Возможно, можно поставить из репо, но у меня тоже своя оказалась

Отвечает за работу со смарт-картами по стандарту pksc11, ставится без проблем

5) =====================================

Все должно было работать.... но у нас вышла проблема с криптографией. В Ubuntu 20.04 подняли дефолтный уровень криптографии до 2
https://www.openssl.org/docs/manmaster/ … level.html

Через параметры снизить его для ppp не удалось, поэтому поставил свой ppp, вставив строчку

--------------------------------------------------------------------------------------------------

Как все работает. Через гуишку настраивается соединение, могу приложить скриншоты. Использует сертификат, записанный на ключ для установки vpn-соединение. По нажатия запрашивает пин-код с токена, дергает ppp, который и устанавливает соединение, считывая сертификат с токена.

(альтернативное соединение с нами через Windows настраивается вот по такой инструкции http://vpn.srcc.msu.ru/)