Table of Contents | ||||
---|---|---|---|---|
|
Введение
В этой инструкции приводится порядок действий Здесь приводится инструкция по настройке доступа к удаленному серверу с помощью OpenSSH и Рутокен ЭЦП. Более подробно можно прочитать здесь: http://www.gooze.eu/howto/using-openssh-with-smartcardsДля работы с Рутокен будем использовать библиотекуРутокен работает как с библиотекой librtpkcs11ecp.so
,
также возможно использование библиотеки
так и библиотекой
opensc-pkcs11.so.
Стенд
...
- Сервер Ubuntu 12.10 x86,
- Клиент Ubuntu 12.10 x86
...
- ,
- Клиент Windows 7;
- Рутокен ЭЦП, отформатированный через Панель управления Рутокен.
Порядок действий для библиотеки librtpkcs11ecp.so
1. Генерация ключей
Первый вариант
На сервере или любой клиентской *nix машине выполняем следующие действия: Клиент
1.1 Устанавливаем необходимые для работы с Рутокен пакеты:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install opensc |
1.2 Библиотеку Устанавливаем библиотеку librtpkcs11ecp.so
помещаем (http://www.rutoken.ru/support/download/pkcs/) в директорию /usr/lib/
1.3 Устанавливаем openssh-client:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-client |
1.4 Генерируем ключевую пару на Рутокен:
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45 |
1.5 Теперь с помощью утилиты ssh-keygen
конвертируем 4 Конвертируем в формат ssh открытый ключ на Рутокен в формат ssh:
Code Block | ||
---|---|---|
| ||
$$ 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 | ||
---|---|---|
| ||
$ 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/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_45 -keyform engine -x509 -out cert.cert -text -days 365 -text
OpenSSL> exit |
1.5.2 Конвертируем сертификат в DER-формат:
Code Block | ||
---|---|---|
| ||
$ openssl x509 -in cert.cert -out cert.der -outform der |
1.5.3 Импортируем сертификат на Рутокен3.1 Подключаемся к серверу:
Code Block | ||
---|---|---|
| ||
ssh$ pkcs11-tool -I-module /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 | ||
---|---|---|
| ||
$ sudo apt-get install openssh-client openssl |
...
Code Block | ||
---|---|---|
| ||
$ 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 | ||
---|---|---|
| ||
$ sudo apt-get install opensc openssh-server |
2.2 Содержимое Копируем на сервер содержимое полученного на шаге 1.8 4 файла key.pub
копируем на сервер в файл ~/.ssh/authorized_keys
(если такого файла нет, нужно его создать).
3. Настройка *nix-клиента
3.1 Устанавливаем opensc
и openssh-client
:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-client |
3.2 Устанавливаем библиотеку librtpkcs11ecp.so
(http://www.rutoken.ru/support/download/pkcs/) в директорию /usr/lib/
3.3 Подключаемся к серверу:
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
$ sudo apt-get install opensc |
1.2 Устанавливаем openssh-client:
...
language | bash |
---|
...
openssh-
...
2. Сервер
2.1 На сервере устанавливаем openssh-server
:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-server |
21.2 Форматируем Рутокен:
Code Block | ||
---|---|---|
| ||
$ 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 | ||
---|---|---|
| ||
$ pkcs15-init -G rsa/2048 --auth-id 02 --id 42 |
21.4 Конвертируем открытый ключ в формат ssh:
Code Block | ||
---|---|---|
| ||
$ pkcs15-tool -read-ssh-key 42 |
Здесь 42 – это id ключа.
21.5 Полученный результат копируем в файл ~/.ssh/authorized_keys
на сервере.3
2.
...
Настройка клиента
2.1 Устанавливаем opensc
и openssh-client
:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install opensc openssh-client |
2.2 3.1 Подключаемся к серверу:
Code Block | ||
---|---|---|
| ||
$ ssh -I /usr/lib/opensc-pkcs11.so <username>@<server> |
Дополнительная информация
Using OpenSSH with smartcards http://www.gooze.eu/howto/using-openssh-with-smartcards