(2021-01-08 20:15:59 отредактировано Artem33)

Re: Поддержка Рутокен ЭЦП в OpenSSL

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

При создании запроса на сертификат столкнулся с тем, что OpenSSL "не знает" атрибуты TITLE (должность) и G (имя и отчество). При генерации запроса с параметрами:

openssl req -utf8 -new -keyform engine -key "pkcs11:model=Rutoken%20ECP;id=2922804615" -passin pass:"12345678" -subj "/CN=GK/OU=Podr/L=Mos/ST=Obl/G=Ivan/TITLE=Boss/C=RU/emailAddress=123@mail.ru/street=Str/O=GosKor/SN=SN_this/INN=12/OGRN=44/SNILS=11" -engine rtengine -out res.pkcs10

возникает сообщение "Skipping unknoun attribute TITLE
Skipping unknoun attribute G". И эти атрибуты в сформированном запросе на сертификат отсутствуют. Есть ли возможность добавить атрибуты в файл запроса?

Использовал  OpenSSL x64 ver. 1.1.0i, Windows 7 x64.

Re: Поддержка Рутокен ЭЦП в OpenSSL

Artem33 пишет:

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

При создании запроса на сертификат столкнулся с тем, что OpenSSL "не знает" атрибуты TITLE (должность) и G (имя и отчество). При генерации запроса с параметрами:

openssl req -utf8 -new -keyform engine -key "pkcs11:model=Rutoken%20ECP;id=2922804615" -passin pass:"12345678" -subj "/CN=GK/OU=Podr/L=Mos/ST=Obl/G=Ivan/TITLE=Boss/C=RU/emailAddress=123@mail.ru/street=Str/O=GosKor/SN=SN_this/INN=12/OGRN=44/SNILS=11" -engine rtengine -out res.pkcs10

возникает сообщение "Skipping unknoun attribute TITLE
Skipping unknoun attribute G". И эти атрибуты в сформированном запросе на сертификат отсутствуют. Есть ли возможность добавить атрибуты в файл запроса?

Использовал  OpenSSL x64 ver. 1.1.0i, Windows 7 x64.

Добрый день!

Попробуйте указать атрибуты title и GN:

openssl req -utf8 -new -keyform engine -key "pkcs11:model=Rutoken%20ECP;id=2922804615" -passin pass:"12345678" -subj "/CN=GK/OU=Podr/L=Mos/ST=Obl/GN=Ivan/title=Boss/C=RU/emailAddress=123@mail.ru/street=Str/O=GosKor/SN=SN_this/INN=12/OGRN=44/SNILS=11" -engine rtengine -out res.pkcs10
$ ./openssl req -new -subj "/title=aaa/GN=OOO" -keyout rsa.pem
Generating a RSA private key
..................+++++
...+++++
writing new private key to 'rsa.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
-----BEGIN CERTIFICATE REQUEST-----
MIICYTCCAUkCAQAwHDEMMAoGA1UEDAwDYWFhMQwwCgYDVQQqDANPT08wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDrEIXjjLF1mZkz5fDSyfOpDAnDroJR
h58aQU5D1UWpIkmVO2vN9LYs9YTAYcf0TVgza33R5aLYebkDry98Np1F7ifvHqOi
GOwZJUh/UnWWXjJtEl/mrHKAgTa+NnIc1TrAqjwWDSkTeuYt0mwWPXze3KNv7wc/
g/4lN3cbT174DppdBM4XDafZ9BS2ADyFlabkclmE+dUg7evy5L0lzsp956D2Ggcx
RKGBq+sBzz7WxUPJmzXAzNppg6Mj71KUfJWToIw0vwcI/kppGVA3Nod540aquTOL
/fGeNTAZ1+c9+J3ZhQPDQc0dK3njyYquZSDlTVGP48st/+LpG4IVdkKVAgMBAAGg
ADANBgkqhkiG9w0BAQsFAAOCAQEAQ4R8DQlUrwp+8Y39O4suExfM3L/5kCm2EvvY
QtSK7t9c+hDv1PxKItuyHcVWFx+GHECS6Pt7GtG8bLrsh6HPz6+qSNTaQNIk0FxJ
W5teEFyhoQJb9Xs1iwrEM/M6u61mLH2JT/C+S3mS3ywE/9t4KIZOyO6RiW0/hSkZ
7xqD/SCn0r83SLugwJ5tjIAJ830n5IOQQNJ5wWaw516uPNiCSufoIaWay8ZZnR9j
m+41a6/EELZx8m3esB4sYZ8SFnVK+UYa1223j3QZ4xAegqYfVCyyZ75sqojn4fVx
klC7dZ5L2niHaAEaQoFDqbuRKmoDtL0k27sA/Cy2BarDtXNrjQ==
-----END CERTIFICATE REQUEST-----

Re: Поддержка Рутокен ЭЦП в OpenSSL

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

Спасибо за информацию, получилось добавить в запрос сертификата!

Re: Поддержка Рутокен ЭЦП в OpenSSL

Добрый день, подскажите, пожалуйста, каким образом можно получить Хеш ИД ключа (sha1) для запроса на генерацию сертификата?

Re: Поддержка Рутокен ЭЦП в OpenSSL

Добрый день!
Уточните, пожалуйста, вопрос. Какие у вас есть входные данные и какой результат ожидается? Какой инструмент предполагается использовать для получения результата?

(2021-02-15 16:24:07 отредактировано Artem33)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Евгений Мироненко пишет:

Добрый день!
Уточните, пожалуйста, вопрос. Какие у вас есть входные данные и какой результат ожидается? Какой инструмент предполагается использовать для получения результата?

Речь идет о получении результата аналогичного результату certutil - dump, такой способ работает только в случае, если установлено КриптоПро.

https://forum.rutoken.ru/uploads/images/2021/02/20f2a78b489b5b99a5422f966f6c6c7a.png

(2021-02-15 17:21:03 отредактировано Евгений Мироненко)

Re: Поддержка Рутокен ЭЦП в OpenSSL

openssl req -in C:\tmp\req.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl sha1
(stdin)= c28c9478643773bb86a42b9a1d09fd666f39c471
certutil -dump C:\tmp\req.pem
Запрос сертификата PKCS10:
Версия: 1
Субъект:
    G=OOO
    T=aaa
  Хэш имени (sha1): d8dcdb3d25d356b8815924ead62fed717a5dda11
  Хэш имени (md5): f3eee283a4ff6afab0518d065d644b4f

Алгоритм открытого ключа:
    ObjectID алгоритма: 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
    Параметры алгоритма:
    05 00
Длина открытого ключа: 2048 бит
Открытый ключ: UnusedBits = 0
    0000  30 82 01 0a 02 82 01 01  00 eb 10 85 e3 8c b1 75
    0010  99 99 33 e5 f0 d2 c9 f3  a9 0c 09 c3 ae 82 51 87
    0020  9f 1a 41 4e 43 d5 45 a9  22 49 95 3b 6b cd f4 b6
    0030  2c f5 84 c0 61 c7 f4 4d  58 33 6b 7d d1 e5 a2 d8
    0040  79 b9 03 af 2f 7c 36 9d  45 ee 27 ef 1e a3 a2 18
    0050  ec 19 25 48 7f 52 75 96  5e 32 6d 12 5f e6 ac 72
    0060  80 81 36 be 36 72 1c d5  3a c0 aa 3c 16 0d 29 13
    0070  7a e6 2d d2 6c 16 3d 7c  de dc a3 6f ef 07 3f 83
    0080  fe 25 37 77 1b 4f 5e f8  0e 9a 5d 04 ce 17 0d a7
    0090  d9 f4 14 b6 00 3c 85 95  a6 e4 72 59 84 f9 d5 20
    00a0  ed eb f2 e4 bd 25 ce ca  7d e7 a0 f6 1a 07 31 44
    00b0  a1 81 ab eb 01 cf 3e d6  c5 43 c9 9b 35 c0 cc da
    00c0  69 83 a3 23 ef 52 94 7c  95 93 a0 8c 34 bf 07 08
    00d0  fe 4a 69 19 50 37 36 87  79 e3 46 aa b9 33 8b fd
    00e0  f1 9e 35 30 19 d7 e7 3d  f8 9d d9 85 03 c3 41 cd
    00f0  1d 2b 79 e3 c9 8a ae 65  20 e5 4d 51 8f e3 cb 2d
    0100  ff e2 e9 1b 82 15 76 42  95 02 03 01 00 01
Запрос атрибутов: 0
  Атрибуты 0:
Алгоритм подписи:
    ObjectID алгоритма: 1.2.840.113549.1.1.11 sha256RSA
    Параметры алгоритма:
    05 00
Подпись: НеиспользБит=0
    0000  8d 6b 73 b5 c3 aa 05 b6  2c fc 00 bb db 24 bd b4
    0010  03 6a 2a 91 bb a9 43 81  42 1a 01 68 87 78 da 4b
    0020  9e 75 bb 50 92 71 f5 e1  e7 88 aa 6c be 67 b2 2c
    0030  54 1f a6 82 1e 10 e3 19  74 8f b7 6d d7 1a 46 f9
    0040  4a 75 16 12 9f 61 2c 1e  b0 de 6d f2 71 b6 10 c4
    0050  af 6b 35 ee 9b 63 1f 9d  59 c6 cb 9a a5 21 e8 e7
    0060  4a 82 d8 3c ae 5e e7 b0  66 c1 79 d2 40 90 83 e4
    0070  27 7d f3 09 80 8c 6d 9e  c0 a0 bb 48 37 bf d2 a7
    0080  20 fd 83 1a ef 19 29 85  3f 6d 89 91 ee c8 4e 86
    0090  28 78 db ff 04 2c df 92  79 4b be f0 4f 89 7d 2c
    00a0  66 ad bb 3a f3 33 c4 0a  8b 35 7b f5 5b 02 a1 a1
    00b0  5c 10 5e 9b 5b 49 5c d0  24 d2 40 da d4 48 aa af
    00c0  cf cf a1 87 ec ba 6c bc  d1 1a 7b fb e8 92 40 1c
    00d0  86 1f 17 56 c5 1d b2 db  22 4a fc d4 ef 10 fa 5c
    00e0  df ee 8a d4 42 d8 fb 12  b6 29 90 f9 bf dc cc 17
    00f0  13 2e 8b 3b fd 8d f1 7e  0a af 54 09 0d 7c 84 43
Подпись соответствует открытому ключу
Хеш ИД ключа (rfc-sha1): 3a691dd4c50648eea6a6af8013b5a12eaaafc2e1
Хеш ИД ключа (sha1): c28c9478643773bb86a42b9a1d09fd666f39c471
Хеш ИД ключа (bcrypt-sha1): 67bf29a9e831445d7ca6c14e4d6fa4afb32b1f86
Хеш ИД ключа (bcrypt-sha256): 0621b62e1d610b72419e737c5f6602588ae1186f6df6046baa56bdde974cf11f
CertUtil: -dump — команда успешно выполнена.

Для ключей ГОСТ 34.10-2012 результат также совпадает.

(2022-05-06 10:09:03 отредактировано Fedor)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Добрый день!
Подскажите пожалуйста в таком вопросе. Перевыпускаю сертификата по ЕГАИС, сам сертификат сделал, сертификат ФС РАР сделать не могу по причине того что нет возможности войти на сайт ЕГАИС.
Как можно еще выпустит серт ФС РАР?
Спасибо заранее.

Проблема решилась. Спасибо.

(2022-08-23 16:40:13 отредактировано xfnreg)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Добрый день!

Не получается сдружить openssl c рутокен.

конфиг openssl.cnf:

[engine_section]
rtengine = gost_section

[gost_section]
#dynamic_path = C:/openssl-1.1.1q/rtengine/rtengine.dll
dynamic_path = C:/Program\ Files/OpenSSL/lib/engines-1_1/rtengine.dll
MODULE_PATH = C:/openssl-1.1.1q/rtengine/rtpkcs11ecp.dll
RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
default_algorithms = CIPHERS, DIGEST, PKEY, RAND

Получаю ошибку:

openssl engine -v
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
     SO_PATH, NO_VCHECK, ID, LIST_ADD, DIR_LOAD, DIR_ADD, LOAD
(rtengine) Rutoken engine
     enable_rand, pkcs11_path, rand_token
9536:error:260AC089:engine routines:int_ctrl_helper:invalid cmd name:crypto\engine\eng_ctrl.c:87:
9536:error:260AB089:engine routines:ENGINE_ctrl_cmd_string:invalid cmd name:crypto\engine\eng_ctrl.c:255:
9536:error:260BC066:engine routines:int_engine_configure:engine configuration error:crypto\engine\eng_cnf.c:141:section=gost_section, name=MODULE_PATH, value=C:/openssl-1.1.1q/rtengine/rtpkcs11ecp.dll
9536:error:0E07606D:configuration file routines:module_run:module initialization error:crypto\conf\conf_mod.c:177:module=engines, value=engine_section, retcode=-1

Версия openssl:

c:\openssl-1.1.1q>openssl version -a
OpenSSL 1.1.1q  5 Jul 2022
built on: Tue Jul  5 16:16:11 2022 UTC
platform: VC-WIN64A-rtt
options:  bn(64,64) rc4(16x,int) des(long) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MT /W3 /wd4090 /nologo /O2 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM
OPENSSLDIR: "C:\Program Files\Common Files\SSL"
ENGINESDIR: "C:\Program Files\OpenSSL\lib\engines-1_1"
Seeding source: os-specific


Библиотеки рутокен последние из sdk.

Понимаю, что ошибка, возможно, в указании пути к библиотекам, но прошу помочь.

Re: Поддержка Рутокен ЭЦП в OpenSSL

xfnreg, добрый день.
Используйте пути:
dynamic_path = "C:\\Program Files\\OpenSSL\\lib\\engines-1_1\\rtengine.dll"
MODULE_PATH = "C:\\openssl-1.1.1q\\rtengine\\rtpkcs11ecp.dll"

Re: Поддержка Рутокен ЭЦП в OpenSSL

Аверченко Кирилл, увы, ошибка ровно та же.

Re: Поддержка Рутокен ЭЦП в OpenSSL

Добрый день, xfnreg!

xfnreg пишет:

Библиотеки рутокен последние из sdk.

Предлагаю воспользоваться и README.txt из того же самого SDK:

Для формирования псевдослучайной последовательности на токене установите
значения для pkcs11_path и rand_token, а также выставите enable_rand = yes в openssl.cnf в секции [ gost_section ]:

    [ gost_section ]
    dynamic_path = /path/to/librtengine.so
    enable_rand = yes
    pkcs11_path = /path/to/librtpkcs11ecp.so
    rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP;serial=2adc8d87
    default_algorithms = ALL

enable_rand - использование формирования псевдослучайной последовательности на токене.
pkcs11_path - путь до библиотеки rtpkcs11ecp.
rand_token - идентификатор токена согласно rfc7512 (pkcs11 uri https://tools.ietf.org/html/rfc7512).

Необходимо заменить "MODULE_PATH" на "pkcs11_path". Я бы для верности еще и "rand_token" написал строчными, как в README.

Кстати, вот как будто полноценная инструкция: https://dev.rutoken.ru/pages/viewpage.a … d=89096210

Re: Поддержка Рутокен ЭЦП в OpenSSL

Евгений Мироненко, спасибо, теперь работает.

Re: Поддержка Рутокен ЭЦП в OpenSSL

Не всё так просто.

Успешно генерирую ключевую пару:

C:\openssl-1.1.1q>"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-tool.exe" --module rtpkcs11ecp.dll --login --pin 12345678 --keypairgen  --key-type GOSTR3410-2012-256:B --id 303030303031 --label 'client01'

Using slot 0 with a present token (0x0)
Key pair generated:
Private Key Object; GOSTR3410-2012-256
  PARAMS OID: 06072a850302022301
  label:      'client01'
  ID:         303030303031
  Usage:      sign
  Access:     sensitive, always sensitive, never extractable, local
Public Key Object; GOSTR3410-2012-256
  PARAMS OID: 06072a850302022301
  VALUE:      fe6c8501e2cfcb4eef4d09b0b67a94b809111912b898b108a8321968c8e69265
              8f01791a73fa5878fb1876f0ffd6215fc2d64e46bd63222532d711e63e93dea7
  label:      'client01'
  ID:         303030303031
  Usage:      verify
  Access:     local

Проверяю, без ошибок:

C:\openssl-1.1.1q>"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-tool.exe" --module rtPKCS11ECP.dll -Ol

Using slot 0 with a present token (0x0)
Logging in to "Rutoken ECP <no label>".
WARNING: user PIN to be changed
Please enter User PIN: Public Key Object; GOSTR3410-2012-256
  PARAMS OID: 06072a850302022301
  VALUE:      2346ab9c7ecb9ecf838cfba160a549946c717a95dd007b2d0288efacb25aafb5
              5233659a33793e446478763e798c95041db1131f2eaee0c761fea3c2de08429a
  label:      'client01'
  ID:         303030303031
  Usage:      verify
  Access:     local
Private Key Object; GOSTR3410-2012-256
  PARAMS OID: 06072a850302022301
  label:      'client01'
  ID:         303030303031
  Usage:      sign
  Access:     sensitive, always sensitive, never extractable, local

Пытаюсь формировать запрос на сертификат:

C:\openssl-1.1.1q>openssl req -utf8 -new -keyform engine -key 'pkcs11:id=000001' -engine rtengine -out demoCA/newcerts/client01.csr

получаю ошибку:

engine "rtengine" set.
cannot load Private Key from engine
9980:error:8108B0F5:lib(129):parse:wrong uri:C:\j\workspace\rtengine-build\a945dbc3\engine\standalone\p11_uri.c:146:
9980:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto\engine\eng_pkey.c:78:
unable to load Private Key

Re: Поддержка Рутокен ЭЦП в OpenSSL

xfnreg, необходимо заменить знак ' на " в строке
C:\openssl-1.1.1q>openssl req -utf8 -new -keyform engine -key 'pkcs11:id=000001' -engine rtengine -out demoCA/newcerts/client01.csr

Правильная строка должна выглядеть так:
C:\openssl-1.1.1q>openssl req -utf8 -new -keyform engine -key "pkcs11:id=000001" -engine rtengine -out demoCA/newcerts/client01.csr