Page tree

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

Compare with Current View Page History

« Previous Version 7 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, затем токен и сертификат на токене. На вкладке Session указываем адрес сервера и подключаемся.

  

Порядок действий для библиотеки 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