-
Добрый день. Создал самоподписанный сертификат. С ним 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, всё работает. В комплекте со сторонним сертификатом не было никакого пароля (по крайней мере - мне так сказали).
Как обычно - два вопроса - кто виноват и что делать...
-
Меняю пароль в IdServerIOHandlerSSLOpenSSL1GetPassword со своим сертификатом - появляется такая же ошибка - EIdOSSLLoadingKeyError. Передаю тот, что нужно - нормально работает.
Кто вообще сталкивался со сторонними сертификатами - расскажите, как происзодит процесс.
-
> Дмитрий Белькевич © (20.11.14 10:03)
> В комплекте со сторонним сертификатом не было никакого пароля > (по крайней мере - мне так сказали).
Ну то, что пишет про пароль это не факт еще что дело в пароле. Просто она не может загрузить закрытый ключ.
Пароль обычно используется в контейнерах, содержащих сертификаты и закрытые ключи для доступа к закрытому ключу.
У тебя вообще закрытый ключ есть? В контейнере какого типа он и сертификат помещен? Обычно закрытый ключ и сертификат не лежат в одном контейнере вместе т.к. закрытый ключ генерируется пользователем, затем формируется запрос на сертификат, содержащий открытый ключ, далее запрос обрабатывается УЦ и выдается сертификат. УЦ вообще ничего про закрытый ключ не знает. Вопрос - где закрытый ключ?
-
Если контейнер PEM, то он должен выглядеть как то так:
-----BEGIN CERTIFICATE-----
....BASE64....
-----END CERTIFICATE----- -----BEGIN ENCRYPTED PRIVATE KEY-----
....BASE64....
-----END ENCRYPTED PRIVATE KEY-----
а может еще верхняя и нижняя части быть в разных файлах
-
Кроме этого, может оказаться, что используемый криптопровайдер (OpenSSL) не поддерживает алгоритмы использованные при выдаче сертификата. Например, сертификат создан с использованием ГОСТ овых алгоритмов, а используемая версия OpenSSL их не поддерживает. Можно преобразовать сертификат в формат, который понимает Windows открыть его и посмотреть, что там в его полях (PEM можно просто переименовать в CRT).
-
Спасибо за ответы, DVM :) Нашли ключ, заработало.
-
Эмн, нашли пароль :)
|