Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
stylenone

Введение

Здесь приводится инструкция по настройке доступа к удаленному серверу с помощью OpenSSH и Рутокен ЭЦП. Рутокен работает как с библиотекой librtpkcs11ecp.so, так и библиотекойopensc-библиотекой pkcs11.so из состава OpenSC.

Стенд

  • Сервер Ubuntu 12.10 x86,
  • Клиент Ubuntu 12.10 x86,
  • Клиент Windows 710;
  • Рутокен ЭЦП, отформатированный через Панель управления Рутокен.

Порядок действий для библиотеки librtpkcs11ecp.so

0. Проверка модели устройства

  1. Подключите USB-токен к компьютеру.
  2. Для определения названия модели USB-токена откройте Терминал и введите команду:

...

В результате в окне Терминала отобразится название модели USB-токена:

Image RemovedImage Added

Убедитесь, что используете: Aktiv Rutoken ECP

1. Генерация ключей

Первый вариант

На сервере или любой клиентской *nix машине выполняем следующие действия:

...

1.2 Устанавливаем библиотеку librtpkcs11ecp.so (http://www.rutoken.ru/support/download/pkcs/) в директорию /usr/lib/

1.3 Генерируем ключевую пару на Рутокен:

...

Code Block
languagebash
$ sudo apt-get install libengine-pkcs11-openssl
$ openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/engines-1.1/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so
OpenSSL> req -engine pkcs11 -new -key id_0:45 -keyform engine -x509 -out cert.cert -text -days 365 -text
OpenSSL> exit

...

На сервере или любой клиентской *nix машине выполняем следующие действия:

1.1 Устанавливаем opensc. Важно, чтобы версия была не ниже, чем после коммита cb54ebf, например 0.13.0rc1. 

1.2 Библиотеку librtpkcs11ecp.so помещаем в директорию /usr/lib/

...

Здесь пара 0:10 - это <слот>:<id>.

2. Настройка сервера

2.1 Устанавливаем openssh-server:

...

2.2 Копируем на сервер содержимое полученного на шаге 1.4 (1.4 8 второй вариант) файла key.pub в файл ~/.ssh/authorized_keys (если такого файла нет, нужно его создать). Для файла с приватными ключами измените права доступа с помощью команды:

Code Block
languagebash
$ chmod 0600 ~/.ssh/authorized_keys

3. Настройка *nix-клиента 

3.1 Устанавливаем opensc и openssh-client:

...

3.2 Устанавливаем библиотеку librtpkcs11ecp.so (http://www.rutoken.ru/support/download/pkcs/) в директорию /usr/lib/

3.3 Вызываем


Code Block
languagebash
ssh-agent -P /opt/aktivco/rutokenecp/amd64/*


3.3 4 Подключаемся к серверу:

Code Block
languagebash
 ssh -I /usr/lib/librtpkcs11ecp.so <username>@<server>

4. Настройка Windows-клиента

4.1 Устанавливаем драйверы Рутокен http://www.rutoken.ru/support/download/drivers-for-windows/.

4.2 В качестве SSH-клиента для Windows используем PuttySC. На вкладке SSH -> PKCS11 ставим галку напротив Attempt "PKCS#11 smartcard" auth, выбираем библиотеку rtPKCS11ECP.dll, затем токен и сертификат на токене. На вкладке Session указываем адрес сервера и имя пользователя (необязательно) и подключаемся.Начиная с Windows 10, можно использовать SSH через Командную строку или PowerShell, с указанием пути к нашей библиотеки rtPKCS11ECP.dll.

Code Block
languagebash
 ssh -I "C:\Windows\System32\rtPKCS11ECP.dll" <username>@<server>

  Image Removed Image Removed 

Порядок действий для библиотеки opensc-pkcs11.so

1. Настройка сервера

1.1 Устанавливаем openssh-server:

...

Code Block
languagebash
$ pkcs15-tool --read-ssh-key 42

Здесь 42 – это id ключа.

1.5 Полученный результат копируем в файл ~/.ssh/authorized_keys на сервере.

2. Настройка клиента

2.1 Устанавливаем opensc и openssh-client:

Code Block
languagebash
$ sudo apt-get install opensc openssh-client

2.2 Вызываем

Code Block
languagebash
ssh-agent -p <путь до физического расположения (не symlink) opensc-pkcs11.so>/*


2.3 Подключаемся к серверу:

Code Block
languagebash
$ ssh -I /usr/lib/opensc-pkcs11.so <username>@<server>

В случае подключения с использованием конфигурационного файла следует вместо параметра IdentityFile добавить SmartcardDevice со значением /usr/lib/librtpkcs11ecp.so.

Дополнительная информация

  1. Using OpenSSH with smartcards