Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Введение

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

Для работы с Рутокен будем использовать библиотеку librtpkcs11ecp.so, также возможно использование библиотеки opensc-pkcs11.so.

Стенд

2 виртуальные машины Ubuntu 12.10 x86 –  сервер и клиент; Рутокен ЭЦП, отформатированный через Панель управления Рутокен.

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

1. Клиент

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

$ sudo apt-get install opensc          

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

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

$ sudo apt-get install openssh-client   

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

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

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

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

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

2. Сервер

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

$ sudo apt-get install openssh-server

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

3. Клиент

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

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

Порядок действий для клиента на Windows

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

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

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

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

$ sudo apt-get install openssh-client openssl          

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

$ openssl genrsa -out keys.pem 2048

1.5 Создаем самоподписанный сертификат:

$ 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-формат:

$ openssl rsa -inform PEM -in keys.pem -out keys.der -outform DER
$ openssl x509 -in cert.cert -out cert.der -outform der

1.7 Импортируем ключи и сертификат в DER-формате на Рутокен:

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y privkey -w keys.der --id 10 --label Rutoken1
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.der --id 10 --label Rutoken1

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

 $ ssh-keygen -D /usr/lib/librtpkcs11ecp.so -I 0:10 >> key.pub

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

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

$ sudo apt-get install openssh-server

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

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

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

Если для работы с Рутокен используется библиотека opensc-pkcs11.so, порядок действий будет следующим.

1. Клиент

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

$ sudo apt-get install opensc          

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

$ sudo apt-get install openssh-client   

2. Сервер

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

$ sudo apt-get install openssh-server

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

$ 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

2.3 Генерируем ключевую пару:

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

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

$ pkcs15-tool -read-ssh-key 42

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

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

3. Клиент

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

$ ssh -I /usr/lib/opensc-pkcs11.so <username>@<server>
  • No labels