Подготовка тестовых ключевых пар и сертификатов

Данное руководство предназначено для подготовки ключевых пар и сертификатов с помощью 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 gost2001 -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 gost2001 -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-----
    MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET
    MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
    dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE
    BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp
    ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA
    BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e
    6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI
    AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK
    sA==
    -----END CERTIFICATE-----
    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIGUMEAGCSqGSIb3DQEFDTAzMBsGCSqGSIb3DQEFDDAOBAh4XqCnZOBdCQICCAAw
    FAYIKoZIhvcNAwcECGhYNP5cyMy1BFAKl4hAt8HUtmR8DjatIygwgSyD34qxAdJv
    5S6r/3ICRZbDt7ALdO1fCvPM8rizSBuRX/Zp8t+470DmafgpK31vpB5Jd6GbwSNj
    Kz5bupBSKQ==
    -----END ENCRYPTED PRIVATE KEY-----
    

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

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIGUMEAGCSqGSIb3DQEFDTAzMBsGCSqGSIb3DQEFDDAOBAhQqtH6wbUZsQICCAAw
    FAYIKoZIhvcNAwcECEkdaoXyvC16BFCW2HFRf8psb/tkUGq5w1IaipbHZnPOBgnK
    C/GmKaCwYnUWdiL3z6eor3QpCMF3mnaVOjOqvMKS2JYiiMc5VuRq/E36qlUP/LgT
    WO0lcxkSww==
    -----END ENCRYPTED PRIVATE KEY-----
    

    Примечание

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