Page tree

Versions Compared

Key

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

Table of Contents
outlinetrue
stylenone

Введение

В этой инструкции приводится порядок действий Здесь приводится инструкция по настройке доступа к удаленному серверу с помощью OpenSSH и Рутокен ЭЦП. Более подробно можно прочитать здесь: http://www.gooze.eu/howto/using-openssh-with-smartcardsДля работы с Рутокен будем использовать библиотекуРутокен работает как с библиотекой librtpkcs11ecp.so, также возможно использование библиотеки opensc- так и библиотекой pkcs11.so из состава OpenSC.

Стенд

...

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

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

...

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

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

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

Image Added

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

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

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

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

1.1 Устанавливаем необходимые для работы с Рутокен пакеты:

Code Block
languagebash
$ sudo apt-get install opensc          

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

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

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

(http://www.rutoken.ru/support/download/pkcs/)

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

Code Block
languagebash
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45

1.5 Теперь с помощью утилиты ssh-keygen конвертируем 4 Конвертируем в формат ssh открытый ключ на Рутокен в формат ssh:

Code Block
languagebash
 $$ ssh-keygen -D /usr/lib/librtpkcs11ecp.so -I 0:45 >> key.pub

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

2. Сервер

1.5 Дополнительно для использования SSH-клиента PuttySC на Windows

1.5.1 Выписываем сертификат для сгенерированной ключевой пары2.1 На сервере устанавливаем openssh-server:

Code Block
languagebash
$ sudo apt-get install openssh-server

2.2 Содержимое полученного на шаге 1.5 файла key.pub копируем на сервер в файл ~/.ssh/authorized_keys (если такого файла нет, нужно его создать).

3. Клиент

 libengine-pkcs11-openssl
$ openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so
OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.cert -text -days 365 -text
OpenSSL> exit

1.5.2 Конвертируем сертификат в DER-формат:

Code Block
languagebash
$ openssl x509 -in cert.cert -out cert.der -outform der

1.5.3 Импортируем сертификат на Рутокен3.1 Подключаемся к серверу:

Code Block
languagebash
 ssh$ pkcs11-tool --Imodule /usr/lib/librtpkcs11ecp.so <username>@<server>

...

 -l -y cert -w cert.der --id 45 --label Rutoken1

Второй вариант

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

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

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

1.3 Устанавливаем openssh-client и openssl:

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

...

Code Block
languagebash
$ openssl req -new -key keys.pem -out cert.csr
$ openssl x509 -req -days 700 -in cert.csr -signkey keys.pem -out cert.cert

1.6 Перекодируем Конвертируем ключи и сертификат в DER-формат:

...

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

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

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

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

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

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

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

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

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

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

3.3 Вызываем


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


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 указываем адрес сервера и имя пользователя (необязательно) и подключаемся.

  

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

...

opensc-pkcs11.so

...


1.

...

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

1.1 Устанавливаем необходимые для работы с Рутокен пакеты:

Code Block
languagebash
$ sudo apt-get install opensc          

1 .2  Устанавливаем openssh-client:

...

languagebash

...

openssh-

...

2. Сервер

2.1 На сервере устанавливаем openssh-server:

Code Block
languagebash
$ sudo apt-get install openssh-server

21.2 Форматируем Рутокен:

Code Block
languagebash
$ pkcs15-init --erase-card -p rutoken_ecp
$ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
$ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize

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

Code Block
languagebash
$ pkcs15-init -G rsa/2048 --auth-id 02 --id 42

21.4 Конвертируем открытый ключ в формат ssh:

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

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

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

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 3.1 Подключаемся к серверу:

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

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

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

  1. Using OpenSSH with smartcards