SSH Auth

В продолжение старой темы хотел задать вопрос. В чем различие между SSH авторизацией в Linux и в Windows (используется Putty).

MiddleWare OpenSC, ключ инициализирован и в нем сделан приватный RSA длиной 2048 бит.

$ pkcs15-init --erase-card
$ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
$ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk ""
$ pkcs15-init --generate-key rsa/2048 --auth-id 02

При запросе через pkcs15-tool --read-ssh-key 45 получаю публичный ключ и могу авторизоваться на сервере. Однако в Windows так сделать не удается(в putty подключаю opensc-pkcs11.dll, программа ключ видит), в логе SSH  на сервере:

Feb 14 13:05:27 localhost sshd[24919]: error: buffer_get_ret: trying to get more bytes 4 than in buffer 1
Feb 14 13:05:27 localhost sshd[24919]: error: buffer_get_string_ret: cannot extract length
Feb 14 13:05:27 localhost sshd[24919]: fatal: buffer_get_string: buffer error

С аладдиновскими токенами все наоборот нормально работает, но там всплывают другие проблемы (кроссплатворменность и прочее).

Вопрос вот в чем. Для того, чтобы такой трюк удался надо все-таки использовать ruToken ECP или же можно ограничится ruToken S. Если да, то что я неверно делал?

Re: SSH Auth

А у вас под виндой opensc-pkcs11.dll из какой версии пакета OpenSC?

Re: SSH Auth

http://www.opensc-project.org/files/ope … -win32.msi - устанавливал вот этот инсталлер. Альтернативный, который Smart Card Bungle, в упор токен не видит.

Re: SSH Auth

То есть версия OpenSC 0.12.2.

Дело в том, что в версии 0.12 из opensc-pkcs11.dll убрана программная поддержка алгоритма RSA, а на токене Рутокен S нет аппаратной реализации RSA.

Попробуйте на винде opensc-pkcs11.dll из версии 0.11.13.

Re: SSH Auth

Рутокен S нет аппаратной реализации RSA.

А в ruToken ECP такая поддержка есть?

Re: SSH Auth

Есть

Re: SSH Auth

То есть чтобы избежать возможных проблем в будущем стоит перейти на них, как более продвинутую аппаратную платформу. Спасибо. Буду дальше разбираться.

А не подскажете, где взять инсталлер opensc 0.11.13, а то у них нету негде. Или придется собирать?

Re: SSH Auth

http://www.opensc-project.org/files/bui … se.tar.bz2

Re: SSH Auth

Итак. Шеф прочитал эту ветку и достал ruToken ECP "не пробу". Почитал данный форум и понял, что на OpenSC 11.13 надо патчи. Посему взял версию 12.2. Что имею на выходе - pkcs15 работает отлично, но вот с pkcs11 проблема. pkcs11-tool не видит токен, при попытке запроса слотов выдает справку. 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:opensc-pkcs11.so
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:/usr/lib/engines/engine_pkcs11.so
[Success]: ID:pkcs11
[Success]: LIST_ADD:1
[Success]: LOAD
[Success]: MODULE_PATH:opensc-pkcs11.so
Loaded: (pkcs11) pkcs11 engine
OpenSSL> req -engine pkcs11 -new -key id_45 -keyform engine -x509 -out cert.pem -text
engine "pkcs11" set.
Invalid slot number: 0
PKCS11_get_private_key returned NULL
cannot load Private Key from engine
139956183152296:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:eng_pkey.c:126:
unable to load Private Key
error in req
OpenSSL>

Система Debian 7, OpenSC 0.12.2, PCSCD 1.8.2.

PS толи я невезучий, то ли руки крюки. :( Вообще конечная задумка - выдавать клиентам ключики и портативную сборку putty + firefox. Чтобы они могли ходить на наш клиентский портал + авторизоваться по SSH.

Re: SSH Auth

Я вам рекомендую не через OpenSSL это делать, а через XCA, так как это описано здесь http://habrahabr.ru/blogs/infosecurity/137306/, только используя билиотеку
PKCS#11 из OpenSC (opensc-pkcs11).

Удобнее.

У меня оно заработало так:

  • токен инициализировал через OpenSC под win 32 (у меня были установлены драйвера Рутокен)

    pkcs15-init.exe --erase-card -r "Aktiv Rutoken ECP 0"
    pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk "" -r "Aktiv Rutoken ECP 0"
    pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk ""  --so-pin "87654321" --finalize -r "Aktiv Rutoken ECP 0"

  • в XCA установил opensc-pkcs11.dll (она лежит в System32)
    С помощью XCA создал ключ на токене и сертификат для этого ключа. При создании сертификата в поле "Внутренне имя" и "Common Name" я ввел одно и то же. При сохранении сертификата на токен XCA интерпретирует его как label сертификата.

  • посмотрел свойства ключа (щелкнул по нему мышью). Запомнил ID.

  • сказал
    pkcs15-tool --read-ssh-key 53FF9D04C18A061A --reader "Aktiv Rutoken ECP 0" > key.ssh.

    53FF9D04C18A061A - ID ключа.

    Оно мне вывалило открытый ключ в файл. Часть из этого файла, имеющую вид

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDS4s44wDwfM6owTjw2+Uzft826FvtOJBT14VWBxmn4fyPwxT3hjE/16+UYW2oe7D2RkUtdArb/bZaFl4D5gZWC1s8dsDQJAaHSAfUlxlG6ZOlZt9nIQtXipuoR818n3filMnzOtVpM6yG2+/2Faftnvd4aEssDMxQBnh8JY4jYnQ==

    я на сервере сохранил в файл $HOME/.ssh/authorized_keys.

    (HOME соответственно того юзера, для которого делаю токен).

    Перезапустил sshd

  • затем взял puttysc.exe отсюда http://www.joebar.ch/puttysc/
    Именно ту, что puttysc.exe.

    Судя по всему она вполне себе portable.

  • прописал в Putty opensc-pkcs11.dll, у меня определился токен, сертификат, поставил галочку "Attempt PKCS#11 SmartCard auth".
    Зашел, оно спросили pin и я на сервере.

Re: SSH Auth

Да, спасибо. Вроде в такой связке все взлетело.

Re: SSH Auth

Виктор Ткаченко пишет:

сказал
pkcs15-tool --read-ssh-key 53FF9D04C18A061A --reader "Aktiv Rutoken ECP 0" > key.ssh.

53FF9D04C18A061A - ID ключа.

Оно мне вывалило открытый ключ в файл.

У меня ничего не вываливается, pkcs15-tool ругается, что типа Unsupported card.
Какие ещё варианты с получением ключа для размещения на сервере могут быть?

Re: SSH Auth

Shef пишет:
Виктор Ткаченко пишет:

сказал
pkcs15-tool --read-ssh-key 53FF9D04C18A061A --reader "Aktiv Rutoken ECP 0" > key.ssh.

53FF9D04C18A061A - ID ключа.

Оно мне вывалило открытый ключ в файл.

У меня ничего не вываливается, pkcs15-tool ругается, что типа Unsupported card.
Какие ещё варианты с получением ключа для размещения на сервере могут быть?

Полагаю надо таки заставить pkcs15-tool опознать токен.

1. Какой у вас токен?
2. Что у вас за версия opensc (opensc-tool -i)?

Re: SSH Auth

Виктор Ткаченко пишет:
Shef пишет:
Виктор Ткаченко пишет:

сказал
pkcs15-tool --read-ssh-key 53FF9D04C18A061A --reader "Aktiv Rutoken ECP 0" > key.ssh.

53FF9D04C18A061A - ID ключа.

Оно мне вывалило открытый ключ в файл.

У меня ничего не вываливается, pkcs15-tool ругается, что типа Unsupported card.
Какие ещё варианты с получением ключа для размещения на сервере могут быть?

Полагаю надо таки заставить pkcs15-tool опознать токен.

1. Какой у вас токен?
2. Что у вас за версия opensc (opensc-tool -i)?

1. Rutoken ЭЦП Flash
2. a.  opensc 0.12.2 - unsupported card
2. b. opensc 0.11.13 - Card not present

Re: SSH Auth

Shef пишет:
Виктор Ткаченко пишет:
Shef пишет:

У меня ничего не вываливается, pkcs15-tool ругается, что типа Unsupported card.
Какие ещё варианты с получением ключа для размещения на сервере могут быть?

Полагаю надо таки заставить pkcs15-tool опознать токен.

1. Какой у вас токен?
2. Что у вас за версия opensc (opensc-tool -i)?

1. Rutoken ЭЦП Flash
2. a.  opensc 0.12.2 - unsupported card
2. b. opensc 0.11.13 - Card not present

Для opensc 0.12.2.

В  файле /etc/opensc/opensc.conf обычно содержится конфиг opensc.
В нем имеется опция profile_dir. Есть у вас по указанному в ней пути файлы с расширением .profile, в частности rutoken_ecp.profile?