Добавил в конфиг:
# Настройки создания запросов на сертификат
[req]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = ext
# Сведения о владельце сертификата
[req_distinguished_name]
countryName = RU
commonName = Ivanov
emailAddress = ivanov@mail.ru
stateOrProvinceName = Moscow
# Расширения сертификата
[ext]
subjectSignTool = ASN1:FORMAT:UTF8,UTF8String:СКЗИ \"Рутокен ЭЦП 2.0\"
extendedKeyUsage=emailProtection
keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
Самоподписанный успешно создался:
c:\test\openssl_1.1>.\openssl.exe
OpenSSL> req -engine rtengine -new -key pkcs11:id=12 -keyform engine -x509 -out cert.crt -outform DER
engine "rtengine" set.
Enter PKCS#11 token PIN:
OpenSSL> exit
Но если задавать переменную OPENSSL_CONF и такой конфиг, то ломается pkcs11-tool:
C:\distr\OpenSC Project\OpenSC\tools>.\pkcs11-tool.exe --module rtPKCS11ECP.dll -T
Auto configuration failed
4480:error:25078067:DSO support routines:WIN32_LOAD:could not load the shared library:.\crypto\dso\dso_win32.c:172:filename(c:\test\openssl_1.1\rtengine.dll)
4480:error:25070067:DSO support routines:DSO_load:could not load the shared library:.\crypto\dso\dso_lib.c:244:
4480:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:.\crypto\engine\eng_dyn.c:450:
4480:error:0E07606D:configuration file routines:MODULE_RUN:module initialization error:.\crypto\conf\conf_mod.c:235:module=engines, value=engine_section, retcode=-1
Если не задавать OPENSSL_CONF, то pkcs11-tool работает, но после добавления сертификата не видит публичный RSA ключ как отдельный объект:
C:\distr\OpenSC Project\OpenSC\tools>.\pkcs11-tool.exe --module rtPKCS11ECP.dll -l -y cert -w C:\test\openssl_1.1\cert.crt --id 3132
Using slot 0 with a present token (0x0)
Logging in to "Rutoken ECP <no label>".
Please enter User PIN: Created certificate:
Certificate Object, type = X.509 cert
label:
ID: 3132
C:\distr\OpenSC Project\OpenSC\tools>.\pkcs11-tool.exe --module rtPKCS11ECP.dll -O
Using slot 0 with a present token (0x0)
Public Key Object; GOSTR3410
PARAMS OID: 06072a850302022400
VALUE: 9e46b532be4c3124fd6b9aadf518fd343ea7738a2f49cd2d7d7bc6681f9c61d7
a88a788152af3b51bcf6cbd62c28d6336f39f0da9ca2cb4a120a42933358357f
label: 24071601
ID: 24071601
Usage: verify
Public Key Object; GOSTR3410
PARAMS OID: 06072a850302022400
VALUE: 9e8d052fff3a9acf168c1718a694fbfb22df5939c461ce03794abfec58000452
b633898b2276e12b3c165f41d2c1a22187e5b2a8b1070e14cd456e5829f78f2e
label: 24071602
ID: 24071602
Usage: verify
Certificate Object, type = X.509 cert
label: 24071601
ID: 24071601
Certificate Object, type = X.509 cert
label:
ID: 3132
- по данному выводу не ясно есть ли соответствующие ключи или сертификат без ключей.
В ПУР данный сертификат отображается в разделе Сертификаты с ключами.
Но бывает, что в ПУР RSA сертификат (не данный, другой) тоже не отображается в разделе "Сертификаты с ключами", а отображается в разделе "Сертификаты", при этом ключевая пара есть. Это зависит только от версии ПУР?