Данное руководство предназначено для подготовки ключевых пар и сертификатов с помощью OpenSSL.

В рамках примера будет подготовлено два файла:

  1. ca.pem, содержащий закрытый ключ удостоверяющего центра.
  2. server.pem, содержащий закрытый ключ и сертификат сервера.

Выполните следующие шаги:

  1. Установите OpenSSL с поддержкой GOST Engine.
  2. Внесите в файл конфигурации OpenSSL изменения, описанные во входящем в комплект OpenSSL файле engines\ccgost\README.gost, в частности:
    • Перед первой секцией (идентификаторы секций обозначаются квадратными скобками) добавьте:

openssl_conf = openssl_def
    • Добавьте в файл конфигурации следующие секции:
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = gost
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

  3. Для генерации ключевой пары и запроса на сертификат удостоверяющего центра выполните следующую команду:

openssl req -newkey gost2012_256 -pkeyopt paramset:A

  4. При выполнении этой команды будет запрошен пароль и значения полей для добавления в запрос. Задайте пароль 123456 и любые значения полей. Ключевая пара будет сохранена в файле /privkey.pem. Запрос на сертификат будет отображён в консоли и в дальнейшем не понадобится.

  5. Для генерации самоподписанного сертификата удостоверяющего центра выполните следующую команду:

openssl req -x509 -new -key /privkey.pem \
-out [путь_к_файлу_сертификата.pem] -days 365

  6. При выполнении этой команды будет запрошен пароль к закрытому ключу удостоверяющего центра. Введите пароль 123456.

Результат будет сохранён в файле сертификата удостоверяющего центра.

  7. Для генерации ключевой пары и запроса на сертификат сервера выполните следующую команду:

openssl req -new -newkey gost2012_256 -pkeyopt paramset:A \
-keyout [путь_к_файлу_ключевой_пары_сервера.key] \
-out [путь_к_файлу_запроса.csr]

  8. При выполнении этой команды будет запрошен пароль к закрытому ключу сервера и значения полей для добавления в запрос. Задайте пароль 123456 и любые значения полей.

  9. Для издания сертификата сервера выполните следующую команду:

openssl x509 -req -in [путь_к_файлу_запроса.csr] \
-CA [путь_к_файлу_сертификата_УЦ.pem] -CAkey /privkey.pem \
-CAcreateserial -out [путь_к_файлу_server.pem]

  10. При выполнении этой команды будет запрошен пароль к закрытому ключу удостоверяющего центра. Введите пароль 123456. Результат будет сохранён в файле server.pem.

  11. Отредактируйте файл server.pem, добавив в его конец содержимое файла ключевой пары сервера.

  12. Переименуйте файл privkey.pem в ca.pem.

  13. Теперь вы можете использовать файлы ca.pem и server.pem вместо файлов с теми же именами, поставляемыми в комплекте JC-WebClient.

  14. Проверьте себя.

Пример содержимого файла server.pem:

-----BEGIN CERTIFICATE-----
MIIBjzCCAToCFDr8AUxvKiqeLDJNpqlyuj9RUoOzMAwGCCqFAwcBAQMCBQAwRTEL
MAkGA1UEBhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVy
bmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTA5MTcxMzMyMTZaFw0yNTEwMTcxMzMy
MTZaMEUxCzAJBgNVBAYTAlJVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQK
DBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwZjAfBggqhQMHAQEBATATBgcqhQMC
AiMBBggqhQMHAQECAgNDAARAH55yTZ/tT1zBJLPzxpGzOjZE9QKDJHuU0ZGWz8qA
o89UjErJmnz2psE7uAyKDthH9Mt9hL+0ewj9FA1fQIi0azAMBggqhQMHAQEDAgUA
A0EAbwX7Oqcao/YJbJoJI7U0Gi8gcakCKnisWHorum7uP/ua6QmtvCg4uIz5e5Xd
wUBfwYIpQ5drB1syHJ8uKiozCQ==
-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIGiME4GCSqGSIb3DQEFDTBBMCkGCSqGSIb3DQEFDDAcBAgOp7RnRc5N8wICCAAw
DAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIl6rLdnwKhwsEUGanHlnVyRieKZ2Y
yvic+zLoo1Y6i0ft9DV0EGY2kqGPlhyhn06HaY6dDta062R449uHvZt2kfULrL82
PznvQlJ2oV/lliUHzQ4tSmaOKHWp
-----END ENCRYPTED PRIVATE KEY-----

Пример содержимого файла ca.pem:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIGiME4GCSqGSIb3DQEFDTBBMCkGCSqGSIb3DQEFDDAcBAhyrznEkVkZ4wICCAAw
DAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQITi+sBnCUcoAEUGP3yzrRyImh8QzI
daUgX5PpkZEIbXTTcYSqnB4GMH2/MzE8G+MquTyZbzIZRNRxKD+SZjGITMM35w0Z
Iqv3zEp2UwFMfPCLodef2jCd1IDa
-----END ENCRYPTED PRIVATE KEY-----

Можно по аналогии с файлом server.pem включить в файл ca.pem сертификат удостоверяющего центра, но для данного примера это не критично.