В операционных системах семейства Windows настроить доступ по VPN c использованием смарт-карт – достаточное простое и тривиальное дело. Хотя, господа из MS явно сломали эту возможность в ОС Windows 10 версия 1709 сборка 16299.15.
При попытке подключиться к VPN серверу по протоколу pptp с использованием смарт-карты, ОС Windows просто закрывает данное окно без каких-либо ошибок, даже не спрашивая пароль от смарт-карты.
«Надо было ставить Linux!!!», скажут многие, и, может быть, будут правы.
В статье мы рассмотрим, как настроить подключение к удаленному серверу по VPN с использованием авторизации по смарт-карте JaCarta.
В качестве операционной системы была выбрана ОС Ubuntu 17.04 x64 Desktop. К сожалению, быстрым способом завести на Debian 9 у меня не получилось, но это повод написать следующую статью под Debian.
1. Далее ставим необходимые нам пакеты
*pptp version 1.9.0
Помимо пакетов из стандартного репозитория нам необходимы драйвера и библиотеки для нашей смарт-карты.
Скачиваем
Распаковываем архив
Устанавливаем необходимые драйверы и библиотеки.
Для 64bit систем:
Для 32bit систем:
2. Предварительные операции завершены. Теперь сама настройка VPN.
2.1. Для начала нам необходимо проверить, увидела ли система нашу смарт-карту. Вставляем карточку JaСarta в USB-порт компьютера и выполняем команду
После чего должно появиться примерно следующее:

2.2. Для создания конфигурационного файла нам будут необходимы идентификаторы ключа и сертификата с токена. Для этого вводим команду
после ввода пин-кода, надо будет запомнить значения из полей ID:

2.3. Получаем root сертификат организации в формате .pem из сертификата формата .cer в кодировке DER.
2.4. Создаём файл /etc/ppp/openssl.cnf со следующим содержанием:
2.5. Необходимо разрешить аутентификацию EAP-TLS, закомментировав в файле /etc/ppp/options.pptp строчку refuse-eap
2.6. Создаем файл с параметрами подключения /etc/ppp/peers/any-peer-name, в качестве параметра «UserName» указать свой доменный логин, далее в качестве параметра «ca» указать путь до сконвертированного корневого сертификата в формате PEM, в качестве параметров «cert» и «key» указать сохраненные идентификаторы ключа и сертификата с префиксом «pkcs11:»
3.Установка соединения:
Разрыв соединения:
Включение отладочного вывода в процессе установки соединения:
ПРИЛОЖЕНИЕ:
Инструкция основана на документе.
При попытке подключиться к VPN серверу по протоколу pptp с использованием смарт-карты, ОС Windows просто закрывает данное окно без каких-либо ошибок, даже не спрашивая пароль от смарт-карты.
«Надо было ставить Linux!!!», скажут многие, и, может быть, будут правы.
В статье мы рассмотрим, как настроить подключение к удаленному серверу по VPN с использованием авторизации по смарт-карте JaCarta.
В качестве операционной системы была выбрана ОС Ubuntu 17.04 x64 Desktop. К сожалению, быстрым способом завести на Debian 9 у меня не получилось, но это повод написать следующую статью под Debian.
$ uname –a Linux VPN-PPTP 4.13.0-16-generic #19-Ubuntu SMP Wed Oct 11 18:35:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
1. Далее ставим необходимые нам пакеты
$ sudo apt update $ sudo apt install opensc libpcsclite1 pcsc-tools pcscd libengine-pkcs11-openssl ppp pptp-linux
*pptp version 1.9.0
Помимо пакетов из стандартного репозитория нам необходимы драйвера и библиотеки для нашей смарт-карты.
Скачиваем
$ mkdir ~/tmp $ cd ~/tmp $ wget https://www.aladdin-rd.ru/support/downloads/279f1310-d83d-4858-ba13-ecdbe0d37530/get
Распаковываем архив
$ unzip get $ cd JaCarta_PKI_Linux/IDProtect\ Client\ 6.37.03/DEB/ $ ls idprotectclient_637.03-0_amd64.deb idprotectclient_637.03-0_i386.deb idprotectclientlib_637.03-0_amd64.deb
Устанавливаем необходимые драйверы и библиотеки.
Для 64bit систем:
$ sudo dpkg -i idprotectclient_637.03-0_amd64.deb $ sudo dpkg –i idprotectclientlib_637.03-0_amd64.deb
Для 32bit систем:
$ sudo dpkg -i idprotectclient_637.03-0_i386.deb
2. Предварительные операции завершены. Теперь сама настройка VPN.
2.1. Для начала нам необходимо проверить, увидела ли система нашу смарт-карту. Вставляем карточку JaСarta в USB-порт компьютера и выполняем команду
$ pkcs11-tool --module /lib64/libASEP11.so -L
После чего должно появиться примерно следующее:
[TEXT] Available slots: Slot 0 (0x0): Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 token label : ISadykov token manufacturer : Aladdin R.D. token model : JaCarta Laser token flags : login required, rng, token initialized, PIN initialized hardware version : 1.0 firmware version : 1.0 serial num : 4E46001220483933 pin min/max : 4/16

2.2. Для создания конфигурационного файла нам будут необходимы идентификаторы ключа и сертификата с токена. Для этого вводим команду
$ pkcs11-tool --module /lib64/libASEP11.so -l –O
после ввода пин-кода, надо будет запомнить значения из полей ID:
Using slot 0 with a present token (0x0) Logging in to "ISadykov". Please enter User PIN: Certificate Object; type = X.509 cert label: le-AladdinJacartaUser-1e321881-0e-59035 ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Private Key Object; RSA label: le-AladdinJacartaUser-1e321881-0e-59035 ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Usage: decrypt, sign

2.3. Получаем root сертификат организации в формате .pem из сертификата формата .cer в кодировке DER.
$ openssl x509 -inform der -in ./root_certificate.cer -out ./root_certificate.pem
2.4. Создаём файл /etc/ppp/openssl.cnf со следующим содержанием:
$ sudo nano /etc/ppp/openssl.cnf openssl_conf = openssl_def [ openssl_def ] engines = engine_section [ engine_section ] pkcs11 = pkcs11_section [ pkcs11_section ] engine_id = pkcs11 dynamic_path = /usr/lib/x86_64-linux-gnu/openssl-1.0.2/engines/pkcs11.so MODULE_PATH = /lib64/libASEP11.so init = 0
2.5. Необходимо разрешить аутентификацию EAP-TLS, закомментировав в файле /etc/ppp/options.pptp строчку refuse-eap
$ sudo nano /etc/ppp/options.pptp
# refuse-eap
2.6. Создаем файл с параметрами подключения /etc/ppp/peers/any-peer-name, в качестве параметра «UserName» указать свой доменный логин, далее в качестве параметра «ca» указать путь до сконвертированного корневого сертификата в формате PEM, в качестве параметров «cert» и «key» указать сохраненные идентификаторы ключа и сертификата с префиксом «pkcs11:»
pty "pptp ***.aladdin-rd.ru --nolaunchpppd" name isadykov # Имя пользователя (может быть DOMAIN\\username) remotename ***.aladdin-rd.ru # имя сервера подключения require-mppe-128 file /etc/ppp/options.pptp ipparam any-peer-name need-peer-eap updetach usepeerdns defaultroute replacedefaultroute ca /path/to/root_certificate.pem # путь до root.pem cert pkcs11:xxxxxxxxxxxxxxxxxxxxxxxxxx # certificate ID key pkcs11:xxxxxxxxxxxxxxxxxxxxxxxxxx # key ID
3.Установка соединения:
$ sudo pon any-peer-name
Разрыв соединения:
$ sudo poff any-peer-name
Включение отладочного вывода в процессе установки соединения:
$ sudo pon klvpn debug dump logfd 2
ПРИЛОЖЕНИЕ:
Инструкция основана на документе.
