Openssl необходимо использовать файл пакета CA (промежуточный сертификат) - PullRequest
2 голосов
/ 15 октября 2011

Я только что купил SSL-сертификат у Go Daddy. Отличная цена, но, похоже, у нее есть недостаток.

Кажется, для корректной работы в браузере must требуется bundle.crt. Я еще не совсем уверен, что это такое, насколько я понимаю, это промежуточный сертификат от центра сертификации. Поправьте меня если я ошибаюсь Так что в моем программном обеспечении у меня есть openssl

SSL_CTX_set_default_passwd_cb(SSL_ctx, pem_passwd_cb);
SSL_CTX_use_PrivateKey_file(SSL_ctx, _private_key, SSL_FILETYPE_PEM);
SSL_CTX_use_certificate_file(SSL_ctx, _certificate, SSL_FILETYPE_PEM);
SSL_CTX_use_certificate_chain_file(SSL_ctx, "./ssl_key/bundle.pem");
SSL_CTX_set_session_cache_mode(SSL_ctx,SSL_SESS_CACHE_SERVER|SSL_SESS_CACHE_NO_INTERNAL);
SSL_CTX_set_quiet_shutdown(SSL_ctx, 1);

Я получаю ошибку:

Вы не запустили init правильно или произошла ошибка.

С последними сертификатами (geotrust) мне не нужен промежуточный комплект, я действительно потерян здесь.

Поскольку SSL_CTX_use_certificate_chain_file принимает только файлы PEM, я преобразовал файл bundle.crt в PEM с использованием openssl.

Есть идеи?

Спасибо!

РЕДАКТИРОВАТЬ 1: По-видимому, промежуточный сертификат должен находиться в папке / etc / ssl / certs. Я положил каждый промежуточный сертификат от go-папы в эту папку, и до сих пор не повезло ... Я удалил строку

SSL_CTX_use_certificate_chain_file(SSL_ctx, "./ssl_key/bundle.pem");

Что мне здесь не пригодится ...

1 Ответ

3 голосов
/ 17 октября 2011

Хорошо, после тестирования миллиона вещей, которые я наконец узнал.

Я не конвертировал bundle.crt в PEM.Я вставил файл сертификата прямо в bundle.crt (в начале файла)

Я удалил эту строку в своем коде:

SSL_CTX_use_certificate_file(SSL_ctx, _certificate, SSL_FILETYPE_PEM);

Итак, вот окончательный код дляSSL init:

SSL_CTX_set_default_passwd_cb(SSL_ctx, pem_passwd_cb);
SSL_CTX_use_PrivateKey_file(SSL_ctx, _private_key, SSL_FILETYPE_PEM);
SSL_CTX_use_certificate_chain_file(SSL_ctx, "./ssl_key/bundle.crt");
SSL_CTX_set_session_cache_mode(SSL_ctx,SSL_SESS_CACHE_SERVER|SSL_SESS_CACHE_NO_INTERNAL);
SSL_CTX_set_quiet_shutdown(SSL_ctx, 1);

Надеюсь, это кому-нибудь поможет и сэкономит много времени (1 полный день для меня; -))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...