(2012-02-23 18:49:03 отредактировано vovka667)

Re: Как правильно устанавливать RuToken в Linux?

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

Не отпишитесь, как удалось сделать аутентификацию с помощью pam (если не сложно)?
Обо что планируете аутентифицироваться?

Отписываюсь. Больше всего понравилась вот эта инструкция.

* Создал сертификат
* Установил libpam-p11

sudo aptitude install libpam-p11

* В файл /usr/share/pam-configs/p11 написал это:

Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/opensc-pkcs11.so

* затем

$ sudo pam-auth-update
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ pkcs15-tool -r <certificate id> > ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

Пока работает корректно. Все приложения (tty, lightdm, sudo) корректно определяют наличие токена, ит предлагают ввести пин. При его отсутствии предлагают ввести обычный пароль. Это можно отключить.

Re: Как правильно устанавливать RuToken в Linux?

Спасибо

(2012-06-17 10:36:28 отредактировано ak64)

Re: Как правильно устанавливать RuToken в Linux?

UBUNTU 12.04 32bit и Рутокен ЭЦП

Приобрел пару токенов Рутокен ЭЦП для бесчеловечных опытов над ними под linux. Пока не получается уговорить токен работать под ubuntu 12.04
Все используемые пакеты взяты из состава дистрибутива. Выявлено три проблемы, для одной из которых есть решение.

Проблема 1: Токен то виден софтвером, то не виден, и чаще всего не виден.

Виновником является pcscd, который запускается в системе с параметром --auto-exits.

Решение: запретить автозавершение демона. В моем случае демон просто был запущен в терминале с параметром -f

Проблема 2: не работает в связке с openssl.
Сценарий: ключевая пара создается в токене, далее при помощи openssl генерируется запрос на сертификат, готовый сертификат X509 размещается в токене.
Сценарий ломается в момент приготовления запроса на сертификат:

# Форматирование токена
$ pkcs15-init --erase-card
$ pkcs15-init --create-pkcs15 --so-pin "admin-1234" --so-puk ""
$ pkcs15-init --store-pin --label "User" --auth-id 02 --pin "7890" --puk "" --so-pin "admin-1234"

# Генерация ключевой пары
$ pkcs15-init --generate-key rsa/2048 --auth-id 02 --pin "7890"
# Дамп токена
$ pkcs15-tool -D
Using reader with a card: Generic CCID Reader 00 00
PKCS#15 Card [Rutoken ECP]:
    Version        : 0
    Serial number  : 000000002CC18B75
    Manufacturer ID: Aktiv Co.
    Last update    : 20120616123105Z
    Flags          : EID compliant

PIN [Security Officer PIN]
    Object Flags   : [0x3], private, modifiable
    ID             : 01
    Flags          : [0x99], case-sensitive, unblock-disabled, initialized, soPin
    Length         : min_len:8, max_len:32, stored_len:32
    Pad char       : 0x00
    Reference      : 1
    Type           : ascii-numeric

PIN [User]
    Object Flags   : [0x3], private, modifiable
    ID             : 02
    Flags          : [0x19], case-sensitive, unblock-disabled, initialized
    Length         : min_len:4, max_len:32, stored_len:32
    Pad char       : 0x00
    Reference      : 2
    Type           : ascii-numeric

Private RSA Key [Private Key]
    Object Flags   : [0x3], private, modifiable
    Usage          : [0x4], sign
    Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
    ModLength      : 2048
    Key ref        : 1 (0x1)
    Native         : yes
    Path           : 3f001000100060020001
    Auth ID        : 02
    ID             : e104850aadc59a9442cae976f758870c3c34269a
    GUID           : {e104850a-adc5-9a94-42ca-e976f758870c}

Public RSA Key [Private Key]
    Object Flags   : [0x2], modifiable
    Usage          : [0x4], sign
    Access Flags   : [0x0]
    ModLength      : 2048
    Key ref        : 0
    Native         : no
    Path           : 3f0050000200
    ID             : e104850aadc59a9442cae976f758870c3c34269a

# Генерация запроса на сертификат
$ 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 slot_1-id_e104850aadc59a9442cae976f758870c3c34269a -keyform engine -x509 -out cert.pem -text
engine "pkcs11" set.
PKCS#11 token PIN:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:iAr
Common Name (e.g. server FQDN or YOUR name) []:User
Email Address []:long@iAr.com
3073771720:error:8000A005:Vendor defined:PKCS11_rsa_sign:General Error:p11_ops.c:131:
3073771720:error:0D0DC006:asn1 encoding routines:ASN1_item_sign_ctx:EVP lib:a_sign.c:314:
error in req
OpenSSL>

Собственно все, дальше пока пройти не удалось. Если у кого есть идеи, то буду весьма признателен.

Проблема 3. Ключи и сертификаты успешно залиты в токен, но аутентификация не работает.
Сценарий: ключевые пары, запрос на сертификат, сертификат - все сгенерено где-то на стороне, приехало к токену в виде трех файлов в PEM формате key.pem, cert.pem, cacert.pem. Ключи и сертификаты заливаются в токен. Настраивается pam аутентификация через pam_p11.
Сценарий отрабатывает до конца, токен система видит, ПИН запрашивается, но аутентификация не проходит. При подключения токена к firefox видны оба сертификата: и персональный и УЦ, после сдандартных пассов с сертификатом УЦ, персональный даже успешно проходит проверку.

# Форматирование токена
$ pkcs15-init --erase-card
$ pkcs15-init --create-pkcs15 --so-pin "admin-1234" --so-puk ""
$ pkcs15-init --store-pin --label "User" --auth-id 02 --pin "7890" --puk "" --so-pin "admin-1234"

# Загрузка ключей и сертификатов
$ pkcs15-init --store-certificate cacert.pem --authority
$ pkcs15-init --store-private-key key.pem --auth-id 02 --id 45 --pin "7890"
$ pkcs15-init --store-certificate cert.pem --auth-id 01 --id 45 --pin "7890"

# Дамп содержимого токена
$ pkcs15-tool -D
Using reader with a card: Generic CCID Reader 00 00
PKCS#15 Card [Rutoken ECP]:
    Version        : 0
    Serial number  : 000000002CC18B75
    Manufacturer ID: Aktiv Co.
    Last update    : 20120616131959Z
    Flags          : EID compliant

PIN [Security Officer PIN]
    Object Flags   : [0x3], private, modifiable
    ID             : 01
    Flags          : [0x99], case-sensitive, unblock-disabled, initialized, soPin
    Length         : min_len:8, max_len:32, stored_len:32
    Pad char       : 0x00
    Reference      : 1
    Type           : ascii-numeric

PIN [User]
    Object Flags   : [0x3], private, modifiable
    ID             : 02
    Flags          : [0x19], case-sensitive, unblock-disabled, initialized
    Length         : min_len:4, max_len:32, stored_len:32
    Pad char       : 0x00
    Reference      : 2
    Type           : ascii-numeric

Private RSA Key [Private Key]
    Object Flags   : [0x3], private, modifiable
    Usage          : [0x4], sign
    Access Flags   : [0x0]
    ModLength      : 2048
    Key ref        : 1 (0x1)
    Native         : yes
    Path           : 3f001000100060020001
    Auth ID        : 02
    ID             : 45

Public RSA Key [Public Key]
    Object Flags   : [0x2], modifiable
    Usage          : [0x4], sign
    Access Flags   : [0x0]
    ModLength      : 2048
    Key ref        : 0
    Native         : no
    Path           : 3f0050000200
    ID             : 45

X.509 Certificate [Certificate]
    Object Flags   : [0x2], modifiable
    Authority      : yes
    Path           : 3f0050000300
    ID             : 58413358ef962c7fb205b222c4d713f11d733549
    GUID           : {58413358-ef96-2c7f-b205-b222c4d713f1}
    Encoded serial : 02 09 00CD17FC562F4D30AB

X.509 Certificate [Certificate]
    Object Flags   : [0x2], modifiable
    Authority      : no
    Path           : 3f0050000301
    ID             : 45
    Encoded serial : 02 01 01

# Подготовка инфраструктуры для pam_p11
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ pkcs15-tool -r 45 > ~/.eid/authorized_certificates

# Проверка
$ sudo -s

Password for token Rutoken ECP (User):
[sudo] password for xxx:

#

Была попытка использовать токен, но попытка не удалась. Смотрим логи syslog, auth.log:

Jun 16 18:07:04 long-d pcscd: dyn_unix.c:81:DYN_GetAddress() IFDHCreateChannelByName: /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: undefined symbol: IFDHCreateChannelByName
Jun 16 18:07:09 long-d sudo: pam_p11_opensc(sudo:auth): fatal: pkcs11_sign failed
Jun 16 18:07:10 long-d ifdhandler[19315]: packet too large for buffer

Не густо, но понятно, что не удалась попытка подписать сообщение. Дальше в этом посте описание безуспешных попыток что-либо подписать с помощью токена, дамп сертификата, который залит в токен.

# Тест токена
$ pkcs11-tool --module opensc-pkcs11.so --login --pin 7890 --slot 1 -t
C_SeedRandom() and C_GenerateRandom():
  seeding (C_SeedRandom) not supported
  seems to be OK
Digests:
  all 4 digest functions seem to work
  MD5: OK
  SHA-1: OK
  RIPEMD160: OK
Signatures (currently only RSA signatures)
  testing key 0 (Private Key)
error: PKCS11 function C_SignInit failed: rv = CKR_KEY_TYPE_INCONSISTENT (0x63)

Aborting.

# Проверка возможностей токена
$ pkcs11-tool --module opensc-pkcs11.so --login --pin 7890 --slot 1 -M
Supported mechanisms:
  SHA-1, digest
  SHA256, digest
  SHA384, digest
  SHA512, digest
  MD5, digest
  RIPEMD160, digest
  GOSTR3411, digest
  GOSTR3410, keySize={256,256}, hw, decrypt, sign, verify
  RSA-X-509, keySize={256,2048}, hw, decrypt, sign, verify
  RSA-PKCS, keySize={256,2048}, hw, decrypt, sign, verify
  SHA1-RSA-PKCS, keySize={256,2048}, sign, verify
  SHA256-RSA-PKCS, keySize={256,2048}, sign, verify
  MD5-RSA-PKCS, keySize={256,2048}, sign, verify
  RIPEMD160-RSA-PKCS, keySize={256,2048}, sign, verify
  RSA-PKCS-KEY-PAIR-GEN, keySize={256,2048}, generate_key_pair

# Проверим как работает хэш
$ pkcs11-tool --module opensc-pkcs11.so --login --pin 7890 --slot 1 -h -m GOSTR3411 -i index.txt -o index.txt.hash
$ pkcs11-tool --module opensc-pkcs11.so --login --pin 7890 --slot 1 -h -m SHA-1 -i index.txt -o index.txt.sha1

# Проверим подпись
$ pkcs15-crypt --sign --sha-1 --pkcs1 -k 45 -p 7890 -i index.txt.sha1
Using reader with a card: Generic CCID Reader 00 00
Compute signature failed: Card command failed

УПС...

Дамп сертификата:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=RU, ST=Moscow, L=Moscow, O=Test corp., OU=iAr, CN=Test CA/emailAddress=ca@iAr.com
        Validity
            Not Before: Jun 16 13:04:52 2012 GMT
            Not After : Jun 16 13:04:52 2013 GMT
        Subject: C=RU, ST=Moscow, L=Moscow, O=Test corp., OU=iAr, CN=User/emailAddress=user@iAr.test.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:aa:6d:11:62:57:45:4d:9a:a7:bf:51:2f:d8:af:
                    7f:a5:12:3e:71:ce:8b:06:0b:33:30:22:dd:b6:e5:
                    b1:04:80:1b:a8:89:46:9d:e9:e7:ca:33:d1:68:fa:
                    f0:74:3d:96:8a:5f:d5:76:65:ad:c6:cc:d6:e3:bf:
                    42:7d:ce:25:40:a0:d1:2c:0f:2f:6d:01:d2:2f:76:
                    cd:74:6d:c4:f3:06:bb:9a:65:51:d1:45:b4:6c:82:
                    1d:9f:da:8a:5f:6b:63:8b:4c:6d:03:ab:df:bc:5e:
                    cd:51:bb:96:f0:37:11:45:ec:bf:ba:5d:65:40:05:
                    49:35:72:1d:0c:26:28:42:4f:6e:3b:54:04:2d:86:
                    6a:2c:01:8c:4b:a0:d8:b9:04:84:b5:2d:7b:79:09:
                    b6:64:bd:16:3f:ac:c8:42:65:ad:67:ca:65:69:c9:
                    e4:df:4f:bc:74:ec:41:2e:59:14:1d:19:c5:9f:8d:
                    94:86:49:67:62:72:ec:55:2b:81:2e:83:c1:cb:20:
                    6c:bc:77:09:00:c5:63:1e:fa:1c:da:58:2c:a2:c8:
                    a8:54:70:d9:cb:0f:02:6c:79:da:b2:7f:6c:0a:36:
                    f0:4e:a0:31:91:d9:77:c5:f0:97:2a:5f:50:07:6d:
                    55:90:84:39:57:5f:04:c4:20:db:8d:90:46:6b:c1:
                    d4:09
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Client, S/MIME, Object Signing
            X509v3 Subject Key Identifier:
                20:1D:D4:42:BB:4B:A4:5A:4B:B8:06:A9:8A:85:B1:CB:A4:34:C3:E9
            X509v3 Authority Key Identifier:
                keyid:61:9F:2F:DA:35:AE:AC:71:D7:C8:48:E4:90:AC:93:7C:25:F0:B0:7E
                DirName:/C=RU/ST=Moscow/L=Moscow/O=Test corp./OU=iAr/CN=Test CA/emailAddress=ca@iAr.com
                serial:CD:17:FC:56:2F:4D:30:AB

            X509v3 Issuer Alternative Name:
                email:ca@iAr.com
            X509v3 Subject Alternative Name:
                email:user@iAr.test.com
            X509v3 Key Usage:
                Digital Signature, Key Encipherment
    Signature Algorithm: sha1WithRSAEncryption
         9f:6d:1e:bc:0f:7d:b9:4e:24:34:ee:ee:bc:41:ff:64:2d:63:
         4a:c1:72:6a:fa:a3:e0:05:4b:8d:6e:0d:a5:8c:b5:3d:f4:93:
         a8:63:2e:56:1a:36:b2:43:1f:bb:ac:ee:bb:4d:24:22:16:34:
         b5:7f:24:6c:e0:8a:a4:d8:e6:11:a3:73:fc:bb:db:77:98:51:
         de:18:12:48:cf:05:16:7e:d0:48:69:bf:19:07:d1:a1:b3:07:
         21:0e:3f:72:6d:ad:b8:68:41:22:52:c9:23:c8:f8:d6:6e:4b:
         40:4c:43:26:f0:83:6d:a3:8f:32:d9:1a:f6:09:14:26:c5:9d:
         d8:cc:1f:cd:2c:53:62:84:47:17:25:f6:4a:99:31:5c:bd:57:
         c2:41:a2:b0:e4:f3:35:34:bd:e5:f4:af:8f:e2:e9:cf:b4:1b:
         54:32:cc:39:c2:a0:33:ac:6c:97:87:a5:0b:e0:4d:65:4f:83:
         2a:c4:fd:2a:29:33:40:23:82:ab:0d:26:52:45:a7:e5:bc:e6:
         80:eb:23:65:a4:41:ad:ca:64:5b:3e:3c:40:56:42:62:1c:56:
         e5:15:75:f8:e6:df:35:3f:fc:c8:8d:be:e0:0a:89:16:0d:19:
         f8:1a:34:ab:5a:41:50:5f:d6:48:ef:88:bd:d7:18:32:9f:7c:
         06:20:9f:1e

Re: Как правильно устанавливать RuToken в Linux?

Спасибо за столь подробное описание. Разберемся по каждому из шагов.

ak64 пишет:

Проблема 1: Токен то виден софтвером, то не виден, и чаще всего не виден.

Честно говоря, не замечал такого поведения. Постараюсь посмотреть как он себя ведет на других дистрибутивах.

ak64 пишет:

Проблема 2: не работает в связке с openssl.

Здесь вероятно проблема в сгенерированном ID ключевой пары - стоит задавать его покороче, например так:

$ pkcs15-init --generate-key rsa/1024 --auth-id 02 --pin 12345678 --id 42

Затем в openssl:

# загрузка модуля
$ engine -t dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/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:/usr/lib/opensc-pkcs11.so
Loaded: (pkcs11) pkcs11 engine
     [ available ]
# создание заявки: передаем id ключа и слот
$ req -engine pkcs11 -new -key slot_1-id_42 -keyform engine -out req.pem -text -x509
engine "pkcs11" set.
PKCS#11 token PIN: 
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ru
State or Province Name (full name) [Some-State]:msk
Locality Name (eg, city) []:msk
Organization Name (eg, company) [Internet Widgits Pty Ltd]:aktiv
Organizational Unit Name (eg, section) []:dev
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:aa@aa.aa
# создание сертификата с подписью на закрытом ключе с ID=42
x509 -engine pkcs11 -signkey slot_1-id_42 -keyform engine -in req.pem -out cert.pem
engine "pkcs11" set.
Getting Private key
ak64 пишет:

Проблема 3. Ключи и сертификаты успешно залиты в токен, но аутентификация не работает.
Была попытка использовать токен, но попытка не удалась. Смотрим логи syslog, auth.log:
Jun 16 18:07:04 long-d pcscd: dyn_unix.c:81:DYN_GetAddress() IFDHCreateChannelByName: /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: undefined symbol: IFDHCreateChannelByName
Jun 16 18:07:09 long-d sudo: pam_p11_opensc(sudo:auth): fatal: pkcs11_sign failed
Jun 16 18:07:10 long-d ifdhandler[19315]: packet too large for buffer

По логу видно, что opensc работает с токеном через openct, возможно проблема в этом. Есть ли возможность удалить openct? С какими параметрами собрана opensc? Приведите пожалуйста вывод команды

$ opensc-tool -i

Re: Как правильно устанавливать RuToken в Linux?

Кирилл Романовский пишет:

Спасибо за столь подробное описание. Разберемся по каждому из шагов.

ak64 пишет:

Проблема 1: Токен то виден софтвером, то не виден, и чаще всего не виден.

Честно говоря, не замечал такого поведения. Постараюсь посмотреть как он себя ведет на других дистрибутивах.

Ubuntu 12.04 -- довольно странный дистрибутив.

Кирилл Романовский пишет:
ak64 пишет:

Проблема 2: не работает в связке с openssl.

Здесь вероятно проблема в сгенерированном ID ключевой пары - стоит задавать его покороче, например так:

$ pkcs15-init --generate-key rsa/1024 --auth-id 02 --pin 12345678 --id 42

Воспроизвел. Результат такой же как и с длинным ключом: отрицательный и с такой же ошибкой.
Строго говоря, не совсем корректно требовать от пользователя делать короткий ключ. :)

Версия openssl:
OpenSSL 1.0.1 14 Mar 2012

Кирилл Романовский пишет:
ak64 пишет:

Проблема 3. Ключи и сертификаты успешно залиты в токен, но аутентификация не работает.
Была попытка использовать токен, но попытка не удалась. Смотрим логи syslog, auth.log:
Jun 16 18:07:04 long-d pcscd: dyn_unix.c:81:DYN_GetAddress() IFDHCreateChannelByName: /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: undefined symbol: IFDHCreateChannelByName
Jun 16 18:07:09 long-d sudo: pam_p11_opensc(sudo:auth): fatal: pkcs11_sign failed
Jun 16 18:07:10 long-d ifdhandler[19315]: packet too large for buffer

По логу видно, что opensc работает с токеном через openct, возможно проблема в этом. Есть ли возможность удалить openct? С какими параметрами собрана opensc? Приведите пожалуйста вывод команды

$ opensc-tool -i

openct вынес из системы. Теперь токен виден софтвером без сбоев, но токен стал моргать светодиодом в пассивном состоянии. Раньше горел непрерывно. Версия opensc:

opensc 0.12.2 [gcc  4.6.3]
Enabled features: zlib readline openssl pcsc(libpcsclite.so.1)

Попытка сделать sudo приводит вот к таким записям в логах:

Jun 25 02:47:06 long-d kernel: [ 5419.208563] usb 2-1.1: new full-speed USB device number 6 using ehci_hcd
Jun 25 02:47:06 long-d mtp-probe: checking bus 2, device 6: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
Jun 25 02:47:06 long-d mtp-probe: bus: 2, device: 6 was not an MTP device
Jun 25 02:47:06 long-d pcscd: dyn_unix.c:37:DYN_LoadLibrary() /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: cannot open shared object file: No such file or directory
Jun 25 02:47:06 long-d pcscd: readerfactory.c:941:RFInitializeReader() RFLoadReader failed: 0x80100014
Jun 25 02:47:06 long-d pcscd: readerfactory.c:275:RFAddReader() Generic CCID Reader init failed.
Jun 25 02:47:06 long-d pcscd: hotplug_libudev.c:377:HPAddDevice() Failed adding USB device: Generic CCID Reader
Jun 25 02:47:06 long-d pcscd: ccid_usb.c:1026:ControlUSB() control failed (2/6): -9 Success

Jun 25 02:49:08 long-d sudo: pam_p11_opensc(sudo:auth): fatal: pkcs11_sign failed
Jun 25 02:49:11 long-d sudo: pam_unix(sudo:auth): conversation failed

Кстати, возился с eToken. Результат очень похож.

Re: Как правильно устанавливать RuToken в Linux?

ak64 пишет:

Воспроизвел. Результат такой же как и с длинным ключом: отрицательный и с такой же ошибкой.
Строго говоря, не совсем корректно требовать от пользователя делать короткий ключ. :)

Я имел в виду не длину ключа, а длину айдишника пары, 1024 я указал чтоб не ждать у себя 10 минут, пока сгенерится длинная пара.

ak64 пишет:

openct вынес из системы. Теперь токен виден софтвером без сбоев, но токен стал моргать светодиодом в пассивном состоянии. Раньше горел непрерывно.
Попытка сделать sudo приводит вот к таким записям в логах:

Jun 25 02:47:06 long-d kernel: [ 5419.208563] usb 2-1.1: new full-speed USB device number 6 using ehci_hcd
Jun 25 02:47:06 long-d mtp-probe: checking bus 2, device 6: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
Jun 25 02:47:06 long-d mtp-probe: bus: 2, device: 6 was not an MTP device
Jun 25 02:47:06 long-d pcscd: dyn_unix.c:37:DYN_LoadLibrary() /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: /usr/lib/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: cannot open shared object file: No such file or directory
Jun 25 02:47:06 long-d pcscd: readerfactory.c:941:RFInitializeReader() RFLoadReader failed: 0x80100014
Jun 25 02:47:06 long-d pcscd: readerfactory.c:275:RFAddReader() Generic CCID Reader init failed.
Jun 25 02:47:06 long-d pcscd: hotplug_libudev.c:377:HPAddDevice() Failed adding USB device: Generic CCID Reader
Jun 25 02:47:06 long-d pcscd: ccid_usb.c:1026:ControlUSB() control failed (2/6): -9 Success

Jun 25 02:49:08 long-d sudo: pam_p11_opensc(sudo:auth): fatal: pkcs11_sign failed
Jun 25 02:49:11 long-d sudo: pam_unix(sudo:auth): conversation failed

Моргание - тоже странный симптом, по-крайней мере в убунте. По логам опять вижу, что оно лезет через OpenCT, возможно из-за этого не работает все остальное. Надо дочистить где-то систему.

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте. Уже который день бьюсь по установке Rutokena под Ubuntu. Перепробовола чуть ли не все версии Убунты, последняя 6 попытка сейчас на Убунту 12.04 64 bit.  Ошибок было море , но, вроде, все решила. Установлены openct, opensc, pcsc-lite. Вроде бы все между собой контачит. Сейчас я остановилась на этапе установки ключевого контейнера.
support@support:~$ /opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Rutoken S 00 00\RaUser-1e34bd3a-caff-4998-8cc6-8c7cd016ef29'
Certmgr 0.9 prerelease (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores

Can not open container
2148073501

[ErrorCode: 0x00000006]

Эту часть '\\.\Aktiv Rutoken S 00 00\RaUser-1e34bd3a-caff-4998-8cc6-8c7cd016ef29' я взяла из вывода комманды:
root@support:/home/support/opensc-0.12.2# /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc
CSP (Type:75) v3.6.5361 KC1 Release Ver:3.6.7184 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 6737603
\\.\Aktiv Rutoken S 00 00\RaUser-1e34bd3a-caff-4998-8cc6-8c7cd016ef29
OK.
Total:
[ErrorCode: 0x00000000]
Следующие команды выполняются без проблем:
root@support:/home/support/opensc-0.12.2# openct-tool atr
Detected Rutoken S driver
Card present, status changed
ATR: 3b 6f 00 ff 00 56 72 75 54 6f 6b 6e 73 30 20 00 00 90 00

root@support:/home/support/opensc-0.12.2# opensc-tool -a
Using reader with a card: Aktiv Rutoken S 00 00
3b:6f:00:ff:00:56:72:75:54:6f:6b:6e:73:30:20:00:00:90:00

root@support:/home/support/opensc-0.12.2# /opt/cprocsp/bin/amd64/list_pcsc
available reader: Aktiv Rutoken S 00 00

root@support:/home/support/opensc-0.12.2# /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view

Nick name: Aktiv Rutoken S 00 00
Connect name:
Reader name: Aktiv Rutoken S 00 00

Nick name: FLASH
Connect name:
Reader name: FLASH

Nick name: HDIMAGE
Connect name:
Reader name: ��������� ������� �� ������� ����


Следующая команда выдает вот это:
root@support:/home/support/opensc-0.12.2# pcscd -fdddddd
00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000031 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000005 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000034 pcscdaemon.c:364:main() file /var/run/pcscd/pcscd.comm already exists.
00000006 pcscdaemon.c:366:main() Another pcscd (pid: 15107) seems to be running.
root@support:/home/support/opensc-0.12.2# service pcscd restart
root@support:/home/support/opensc-0.12.2# pcscd -fdddddd
00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000031 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000005 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000004 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000097 configfile.l:245:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
00000020 configfile.l:257:DBGetReaderListDir() Skipping non regular file: ..
00000006 configfile.l:257:DBGetReaderListDir() Skipping non regular file: .
00000007 configfile.l:298:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
00000045 pcscdaemon.c:518:main() pcsc-lite 1.8.3 daemon ready.
00000107 tokenparser.l:187:bundleParse() Could not open bundle file /usr/lib64/pcsc/drivers/ifd-RutokenS.bundle.zip/Contents/Info.plist: Not a directory
00001314 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/002/001
00000115 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/002/001
00000116 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x0A89, PID: 0x0020, path: /dev/bus/usb/002/002
00000024 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x0A89, PID: 0x0020, path: /dev/bus/usb/002/002
00000007 hotplug_libudev.c:311:HPAddDevice() Adding USB device: Aktiv Rutoken S
00000027 readerfactory.c:936:RFInitializeReader() Attempting startup of Aktiv Rutoken S 00 00 using /usr/lib64/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.
00000163 dyn_unix.c:81:DYN_GetAddress() IFDHCreateChannelByName: /usr/lib64/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so: undefined symbol: IFDHCreateCha
00000011 readerfactory.c:794:RFBindFunctions() Loading IFD Handler 2.0
00000223 readerfactory.c:967:RFInitializeReader() Open Port 0x200000 Failed (usb:0a89/0020:libudev:0:/dev/bus/usb/002/002)
00000009 readerfactory.c:276:RFAddReader() Aktiv Rutoken S init failed.
00000007 readerfactory.c:987:RFUnInitializeReader() Attempting shutdown of Aktiv Rutoken S 00 00.
00000005 readerfactory.c:863:RFUnloadReader() Unloading reader driver.
00000045 hotplug_libudev.c:379:HPAddDevice() Failed adding USB device: Aktiv Rutoken S
00000160 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/003/001
00000112 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/003/001
00000116 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x093A, PID: 0x2510, path: /dev/bus/usb/003/002
00000147 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/004/001
00000157 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/005/001
00000147 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001


Я не понимаю в чем ошибка, а главное как это испарвить? Почему не выполняется команда certmgr -inst - cont ???
Заранее спасибо за ваши ответы.

Re: Как правильно устанавливать RuToken в Linux?

Возможно, у вас конфликтуют несколько запущенных одновременно pcscd. Попробуйте завершить их командой

$ killall pcscd

затем, выдернув предварительно токен, запустить pcscd с параметрами -fddddd. После этого воткните токен, выполните команды

$ opensc-tool -l
$ /opt/cprocsp/bin/amd64/list_pcsc
$ /opt/cprocsp/bin/amd64/certmgr -inst -cont <...>

и после этого пришлите лог pcscd.

Также, пробовали ли вы обращаться в поддержку КриптоПро? Возможно, они смогут подсказать по работе с их утилитами.

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте.
Не могу разобраться с токеном. У меня gentoo. Установил opensc с поддержкой pcsc-lite и установил ccid.
Запускаю pcscd -afdddd. Затем запускаю opensc-tool --list-readers и получаю "No smart card readers found.". pcsc_scan зависает на "Waiting for the first reader..."
Вывод dmesg при подключении токена:

[ 3641.008026] hub 5-0:1.0: hub_suspend
[ 3641.008037] usb usb5: bus auto-suspend, wakeup 1
[ 3641.008041] usb usb5: suspend_rh
[ 3648.135626] usb usb2: usb wakeup-resume
[ 3648.135634] usb usb2: usb auto-resume
[ 3648.135640] ehci_hcd 0000:00:1d.7: resume root hub
[ 3648.256302] ehci_hcd 0000:00:1d.7: port 1 full speed --> companion
[ 3648.256312] ehci_hcd 0000:00:1d.7: GetStatus port:1 status 003801 0  ACK POWER OWNER sig=j CONNECT
[ 3648.256421] usb usb5: usb wakeup-resume
[ 3648.256427] usb usb5: usb auto-resume
[ 3648.256430] usb usb5: wakeup_rh
[ 3648.267053] hub 2-0:1.0: hub_resume
[ 3648.267087] ehci_hcd 0000:00:1d.7: GetStatus port:1 status 003002 0  ACK POWER OWNER sig=se0 CSC
[ 3648.288038] hub 5-0:1.0: hub_resume
[ 3648.288067] uhci_hcd 0000:00:1d.0: port 1 portsc 0093,00
[ 3648.288073] hub 5-0:1.0: port 1: status 0101 change 0001
[ 3648.368050] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0000
[ 3648.389040] hub 5-0:1.0: state 7 ports 2 chg 0002 evt 0000
[ 3648.389068] hub 5-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[ 3648.491064] usb 5-1: new full-speed USB device number 9 using uhci_hcd
[ 3648.632098] usb 5-1: default language 0x0409
[ 3648.642103] usb 5-1: udev 9, busnum 5, minor = 520
[ 3648.642107] usb 5-1: New USB device found, idVendor=0a89, idProduct=0020
[ 3648.642111] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3648.642114] usb 5-1: Product: Rutoken S
[ 3648.642117] usb 5-1: Manufacturer: Aktiv Co.
[ 3648.642690] usb 5-1: usb_probe_device
[ 3648.642695] usb 5-1: configuration #1 chosen from 1 choice
[ 3648.645114] usb 5-1: adding 5-1:1.0 (config #1, interface 0)
[ 3648.645569] hub 5-0:1.0: state 7 ports 2 chg 0000 evt 0002
[ 3651.008045] hub 2-0:1.0: hub_suspend
[ 3651.008056] usb usb2: bus auto-suspend, wakeup 1
[ 3651.008060] ehci_hcd 0000:00:1d.7: suspend root hub

В выводе lsusb появляется новая строка:

Bus 005 Device 009: ID 0a89:0020  

Вывод в pcscd:

acer ~ # pcscd -afdddd
00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000041 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000009 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000006 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000221 configfile.l:298:DBGetReaderList() Parsing conf file: /etc/reader.conf.d
00000037 pcscdaemon.c:525:main() pcsc-lite 1.8.7 daemon ready.
00032136 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/003/001
00000386 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/004/001
00000357 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000396 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/005/001
00000592 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/006/001
00000524 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/007/001
00000533 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
---- вставляю токен
04615627 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x0A89, PID: 0x0020, path: /dev/bus/usb/005/010

Я просто не знаю что делать дальше, чтобы заработало..

(2013-02-05 14:13:43 отредактировано Власков Тимофей)

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте.
Есть Rutoken S 32K200Z.
Есть плата c arm процессором, с установленным linux.

# uname -a
Linux dm816x-evm 2.6.37

Все собираю из исходников. 
opensc-0.13.0.
1.Подскажите, opensc лучше собирать с поддержкой openct или же pcsc?
При конфигурации opensc , насколько я понял можно выбирать, что-то одно.

configure: error: Only one of --enable-pcsc, --enable-openct, --enable-ctapi can be specified! 

Я собрал с поддержкой openct. Соответственно, собрал предварительно openct-0.6.20

на плате могу увидеть Rutoken.
вставляю Рутокен.

openct-control init
openct-tool list
0 Rutoken S driver

opensc-tool -l
# Detected readers (openct)
Nr.  Card  Features  Name
0    Yes             Rutoken S driver

и даже могу исследовать токен, с помощью opensc-explorer.

2.Не работает hotplug.
то есть, токен виден только после его вставки и openct-control init.

Re: Как правильно устанавливать RuToken в Linux?

Я бы Вам порекомендовал бы pcsc-lite.
Он лучше поддерживается и проблем с hotplug у него не должно быть.

(2013-02-08 11:14:22 отредактировано Власков Тимофей)

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте.
Кирилл, однако, как вы указывали здесь https://forum.rutoken.ru/topic/1666/ , openct  все равно придется компилировать с ключем --with-bundle ? Чтобы получить драйвер для Rutoken S. Я правильно понимаю?

Re: Как правильно устанавливать RuToken в Linux?

Здравствуйте.

Власков Тимофей пишет:

Здравствуйте.
Кирилл, однако, как вы указывали здесь https://forum.rutoken.ru/topic/1666/ , openct  все равно придется компилировать с ключем --with-bundle ? Чтобы получить драйвер для Rutoken S. Я правильно понимаю?

Изложенные в указанной статье рекомендации полностью справедливы для того случая, когда нужно использовать rdesktop.
Опишите, пожалуйста, подробно какую схему использования токена Вы хотите реализовать.

Re: Как правильно устанавливать RuToken в Linux?

Антон Тихиенко пишет:

Здравствуйте.
Изложенные в указанной статье рекомендации полностью справедливы для того случая, когда нужно использовать rdesktop.
Опишите, пожалуйста, подробно какую схему использования токена Вы хотите реализовать.

Пока планируется просто авторизация по сети с тонкого клиента, на некоем сервере загрузки.

Re: Как правильно устанавливать RuToken в Linux?

А вы для этого планируете использовать rdesktop или на данный момент вам нужно только подключить токен к системе?