/ / OpenSSL z silnikiem GOST - openssl, gost3410

OpenSSL z silnikiem GOST - openssl, gost3410

Chcę użyć OpenSSL do generowania prywatnych / publicznych / (żądanie podpisania certyfikatu) i do podpisania niektórych danych później. Ale chcę użyć Silnik OpenSSL GOST.

Pobrałem OpenSSL 1.0.0 i zmodyfikowane openssl.cfg plik:

    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

Potrafię wygenerować klucz prywatny i CSR (ciąg poleceń w jednym wierszu):

    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/ 
emailAddress=vany.egorov@gmail.com" 
-new > certificate_signing_request.csr

Dostaję 2 pliki:

  • certificate_signing_request.csr
  • privkey.pem

Wiem, że mogę to zrobić (wypisuje (niezaszyfrowaną) tekstową reprezentację kluczy prywatnych i publicznych):

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

Używam GOST zamiast RSA, dlatego nie mogę po prostu zrobić:

    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:.cryptoevpp_lib.c:288:

Moje pytanie brzmi: jak mogę wygenerować / uzyskać klucz publiczny (mabye z klucza prywatnego lub z csr) używając gost?</ strong>

Używam:

  • Windows 7 Professional x64;
  • OpenSSL 1.0.0;
  • Silnik Gost.

Dzięki za pomoc.

Odpowiedzi:

17 dla odpowiedzi nr 1

Rozwiązałem mój problem.

Przewodnik krok po kroku dla każdego, kto chce mieć alternatywę КРИПТО-ПРО

Żądanie podpisania certyfikatu (CSR) + klucz prywatny

./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/emailAddress=vany.egorov@gmail.com" -keyout private.key.pem -out csr.csr

Zapisz CSR (csr.csr) za pomocą private.key.pem (!!! TYLKO ADMIN COMMAND PROMT !!!)

jeśli nie admin: "nie można zapisać" stanu losowego ""

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

Uzyskaj klucz publiczny

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

Zdobądź GOST2001-md_gost94 hex

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

Pobierz aplikację MIME / x-pkcs7-signature

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