Конференция "Сети" » Совместно с OpenSSL + Indy не работают сторонние сертификаты
 
  • Дмитрий Белькевич © (20.11.14 10:03) [0]
    Добрый день. Создал самоподписанный сертификат. С ним SSL нормально работает. Реализация: TIdHTTPServer + TIdServerIOHandlerSSLOpenSSL + OpenSSL библиотеки.

    Пробуем со сторонним сертификатом, выданным сертификационной компанией. Запускаю программу, происходит ошибка при запуске SSL соединения:

    Error. Exception EIdOSSLLoadingKeyError while trying activate server. Error:"Could not load key, check password.
    error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt"

    При генерации сертификата, библиотека OpenSSL запрашивала пароль, я его передаю в IdServerIOHandlerSSLOpenSSL1GetPassword, всё работает. В комплекте со сторонним сертификатом не было никакого пароля (по крайней мере - мне так сказали).

    Как обычно - два вопроса - кто виноват и что делать...
  • Дмитрий Белькевич © (20.11.14 10:10) [1]
    Меняю пароль в IdServerIOHandlerSSLOpenSSL1GetPassword со своим сертификатом - появляется такая же ошибка - EIdOSSLLoadingKeyError. Передаю тот, что нужно - нормально работает.

    Кто вообще сталкивался со сторонними сертификатами - расскажите, как происзодит процесс.
  • DVM © (20.11.14 16:26) [2]

    > Дмитрий Белькевич ©   (20.11.14 10:03) 


    > В комплекте со сторонним сертификатом не было никакого пароля
    > (по крайней мере - мне так сказали).

    Ну то, что пишет про пароль это не факт еще что дело в пароле. Просто она не может загрузить закрытый ключ.

    Пароль обычно используется в контейнерах, содержащих сертификаты и закрытые ключи для доступа к закрытому ключу.

    У тебя вообще закрытый ключ есть? В контейнере какого типа он и сертификат помещен?
    Обычно закрытый ключ и сертификат не лежат в одном контейнере вместе т.к. закрытый ключ генерируется пользователем, затем формируется запрос на сертификат, содержащий открытый ключ, далее запрос обрабатывается УЦ и выдается сертификат. УЦ вообще ничего про закрытый ключ не знает.
    Вопрос - где закрытый ключ?
  • DVM © (20.11.14 16:30) [3]
    Если контейнер PEM, то он должен выглядеть как то так:

    -----BEGIN CERTIFICATE-----

    ....BASE64....

    -----END CERTIFICATE-----
    -----BEGIN ENCRYPTED PRIVATE KEY-----

    ....BASE64....

    -----END ENCRYPTED PRIVATE KEY-----

    а может еще верхняя и нижняя части быть в разных файлах
  • DVM © (20.11.14 16:38) [4]
    Кроме этого, может оказаться, что используемый криптопровайдер (OpenSSL) не поддерживает алгоритмы использованные при выдаче сертификата. Например, сертификат создан с использованием ГОСТ овых алгоритмов, а используемая версия OpenSSL их не поддерживает. Можно преобразовать сертификат в формат, который понимает Windows открыть его и посмотреть, что там в его полях (PEM можно просто переименовать в CRT).
  • Дмитрий Белькевич © (21.11.14 23:13) [5]
    Спасибо за ответы, DVM :) Нашли ключ, заработало.
  • Дмитрий Белькевич © (21.11.14 23:13) [6]
    Эмн, нашли пароль :)
 
Конференция "Сети" » Совместно с OpenSSL + Indy не работают сторонние сертификаты
Есть новые Нет новых   [134427   +34][b:0][p:0]