OpenSSL con motor GOST
gost3410 (1)
Quiero usar OpenSSL para generar private / public / (solicitud de firma de certificado) y para firmar algunos datos más adelante. Pero quiero usar el motor OpenSSL GOST .
Descargué OpenSSL 1.0.0 y modifiqué el archivo openssl.cfg :
openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = ./gost.dll
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
Puedo generar clave privada y CSR ( cadena de comando de una sola línea ):
openssl req -newkey gost2001 -pkeyopt paramset:A -passout pass:aofvlgzm /
-subj "/C=RU/ST=Moscow/L=Moscow/O=foo_bar/OU=foo_bar/CN=developer/ /
[email protected]" /
-new > certificate_signing_request.csr
Obtengo 2 archivos:
- certificate_signing_request.csr
- privkey.pem
Sé que puedo hacer (imprime una representación de texto (sin cifrar) de claves privadas y públicas):
openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -text
Utilizo GOST en lugar de RSA y es por eso que no puedo hacer lo siguiente:
openssl rsa -in privkey.pem -pubout -out pubkey.pem
Enter pass phrase for privkey.pem:
6132:error:0607907F:digital envelope routines:EVP_PKEY_get1_RSA:expecting an rsa key:./crypto/evp/p_lib.c:288:
Mi pregunta es: ¿cómo puedo generar / obtener una clave pública (mabye desde una clave privada o desde csr) usando gost?
Yo suelo:
- Windows 7 profesional x64;
- OpenSSL 1.0.0;
- Motor de Gost .
Gracias por cualquier ayuda.
Resolví mi problema.
Guía paso a paso para todos los que quieran una alternativa a КРИПТО-ПРО
Solicitud de firma de certificado (CSR) + clave privada
./openssl req -newkey gost2001 -pkeyopt paramset:A -passout pass:aofvlgzm -subj "/C=RU/ST=Moscow/L=Moscow/O=foo_bar/OU=foo_bar/CN=developer/[email protected]" -keyout private.key.pem -out csr.csr
Firme CSR (csr.csr) con private.key.pem (¡ADMIN COMMAND PROMT SOLAMENTE!)
si no admin: "no se puede escribir ''estado aleatorio''"
./openssl x509 -req -days 365 -in csr.csr -signkey private.key.pem -out crt.crt
Obtener clave pública
./openssl x509 -inform pem -in crt.crt -pubkey -noout > public.key.pem
Obtener GOST2001-md_gost94 hex
./openssl.exe dgst -hex -sign private.key.pem message.xml
Obtenga la aplicación MIME / x-pkcs7-signature
./openssl smime -sign -inkey private.key.pem -signer crt.crt -in message.xml