2011-08-30 34 views
10

Quiero usar OpenSSL para generar private/public/(solicitud de firma de certificado) y para firmar algunos datos más adelante. Pero quiero usar OpenSSL GOST engine.OpenSSL con motor GOST

He descargado OpenSSL 1.0.0 y modificar openssl.cfg archivo:

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 la clave privada y la RSE (sola línea cadena de comandos):

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 un (representación sin cifrar) texto de claves privadas y públicas):

openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -text 

utilizo en lugar GOST RSA es por eso que no puedo hacer:

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?

que utilizo:

  • Windows 7 x64 profesional;
  • OpenSSL 1.0.0;
  • Gost engine.

Gracias por cualquier ayuda.

Respuesta

17

Resolví mi problema.

Guía paso a paso para todos los que quieren 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

RSE sesión (csr.csr) con privada .key.pem (¡ADMIN COMMAND PROMT SOLAMENTE!)

si no es administrador: "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

Get GOST2001-md_gost94 hexagonal

./openssl.exe dgst -hex -sign private.key.pem message.xml

Obtener MIME application/x-pkcs7 firma

./openssl smime -sign -inkey private.key.pem -signer crt.crt -in message.xml

+0

gran solución - funcionó a la perfección para mí! –