2011-08-30 4 views
10

Desidero utilizzare OpenSSL per generare private/public/(Certificate Signing Request) e firmare alcuni dati in seguito. Ma voglio usare OpenSSL GOST engine.OpenSSL con motore GOST

Ho scaricato OpenSSL 1.0.0 e modificato openssl.cfg di file:

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 

faccio a generare la chiave privata e CSR (singola riga di comando stringa):

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 

Ottengo 2 file:

  • certificate_signing_request.csr
  • privkey.pem

so che posso fare (stampe una rappresentazione (in chiaro) il testo di chiavi pubbliche e private):

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

io uso GOST invece RSA è per questo che non posso fare:

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: 

La mia domanda è: come posso generare/ottenere la chiave pubblica (mabye dalla chiave privata o da csr) usando gost?

io uso:

  • Windows 7 x64 professionale;
  • OpenSSL 1.0.0;
  • Motore Gost.

Grazie per qualsiasi aiuto.

risposta

17

Ho risolto il mio problema.

Guida passo passo per tutti coloro che vogliono un'alternativa a КРИПТО-ПРО

Certificate Signing Request (CSR) + chiave privata

./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

Segno CSR (csr.csr) con privati .key.pem (!!! SOLO PROMANDO DI COMANDO AMMINISTRATORE !!!)

se non admin: "Impossibile scrivere 'stato casuale'"

./openssl x509 -req -days 365 -in csr.csr -signkey private.key.pem -out crt.crt

Acquista chiave

./openssl x509 -inform pem -in crt.crt -pubkey -noout > public.key.pem

Get GOST2001-md_gost94 hex pubblica

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

Get MIME application/x-pkcs7-firma

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

+0

grande soluzione - ha funzionato perfettamente per me! –