2011-08-30 4 views
10

Я хочу использовать OpenSSL для создания private/public/(Request Signing Request) и подписать некоторые данные позже. Но я хочу использовать OpenSSL GOST engine.OpenSSL с двигателем GOST

Скачал OpenSSL 1.0.0 и модифицированный 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 

я могу генерировать секретный ключ и CSR (однострочный командную строку):

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 

Я получаю 2 файла:

  • certificate_signing_request.csr
  • privkey.pem

Я знаю, что я могу сделать (печатает (в незашифрованном виде) текстовое представление закрытых и открытых ключей):

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

я использую вместо ГОСТа RSA, поэтому я не могу просто сделать:

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: 

Мой вопрос: как я могу сгенерировать/получить открытый ключ (mabye из частного ключа или из csr) с помощью gost?

Я использую:

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

Благодарим за помощь.

ответ

17

Я решил свою проблему.

Шаг за шагом руководство для всех, кто хочет альтернативу КРИПТО-ПРО

запрос на подпись сертификата (CSR) + секретного ключа

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

Вход CSR (csr.csr) с частным .key.pem (!!! АДМИНСКАЯ КОМАНДА ПРОМТ ТОЛЬКО !!!)

если не админ: "не писать" случайное состояние"

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

Получить открытый ключ

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

Get GOST2001-md_gost94 шестигранной

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

Получить MIME применение/х-pkcs7 подпись

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

+0

отличное решение - работал отлично для меня! –

Смежные вопросы