Работа с библиотекой OpenSSL в c, что является лучшим способом загрузить полную цепочку сертификатов из файла PEM в память? Вход представляет собой один файл PEM с конкатенированными сертификатами 1..n, вывод должен быть STACK_OF(X509)*
.Загрузить цепочку сертификатов из файла PEM в STACK_OF (X509) * с использованием OpenSSL
Для отдельных сертификатов, самый простой способ, чтобы загрузить их следующим образом:
SSL_CTX *sslctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_certificate_file(sslctx, "certificate.pem", SSL_FILETYPE_PEM);
SSL *ssl = SSL_new(sslctx);
X509 *crt = SSL_get_certificate(ssl);
(обработка ошибок, освобождение ресурсов и подсчет ссылок опущены для ясности; с использованием синтаксиса C99; «простой», что означает «избегать более низкого уровня BIO и ASN.1 API-интерфейсы ")
Однако для полных цепочек сертификатов, SSL_CTX_use_certificate_chain_file()
может использоваться, чтобы загрузить их в SSL_CTX
и первый сертификат может быть получен с помощью SSL_get_certificate()
, но там, кажется, нет API function для извлечения остальную часть цепи сертификата с SSL
контекст.
Так что же лучший способ загрузить цепочку сертификатов из файла?
FTR, OpenSSL 1.0.2, наконец, представил SSL_CTX_get0_chain_certs() для доступа к дополнительным сертификатам. –
@ Daniel Roethlisberger, спасибо, хорошо знать – sirgeorge