2016-10-15 21 views
1

У меня есть программа C, использующая библиотеку OpenSSL, чтобы установить соединение с httpbin.org с использованием SSL/TLS. Клиентская программа способна установить соединение с сервером.Клиентская программа для проверки сертификата из частного CA?

Теперь я хочу подключиться к своему собственному серверу, чей сертификат подписан нашим собственным или внутренним ЦС. На стороне клиента я хочу заставить OpenSSL использовать наш собственный ЦС для проверки сертификата. Итак, мой вопрос:

Как загрузить мой собственный сертификат ЦС с помощью библиотеки и заставить его использовать только этот ЦС для проверки сертификата сервера?

ответ

1

Укажите, какой CA следует использовать для проверки, можно выполнить несколькими способами, в зависимости от того, как у вас есть CA (то есть список структур X509, один файл, каталог с сертификатами ...). Поскольку последний вопрос не детализирован в вопросе, я ограничиваю ответ на самый простой случай: один CA или список CA в формате PEM внутри одного файла. Установка этого файла в качестве единственного центра сертификации для проверки может быть сделано с SSL_CTX_verify_location так:

SSL_CTX_load_verify_locations(ctx, "ca.pem", NULL); 

Для получения дополнительной информации (например, обработка ошибок) см the documention и examples on how to use it.

+2

Сообщить кому-то, что нужно искать в Интернете, менее полезно. Из любопытства, почему вы в основном предоставляете ответы без кода? Stack Overflow - это сайт программирования и разработки, но ваши ответы, как правило, отличаются от типа MCVE. Ответ выше, вероятно, должен быть комментарием. Это причина, по которой я редко пересматриваю ваши ответы. – jww

+2

@jww: Я не думаю, что stackoverflow - это служба записи кода, но я думаю, что он должен предоставить важную информацию, отсутствующую в OP. В этом случае я думаю, что OP не знал, как указать CA: * «Как загрузить собственный сертификат CA с помощью библиотеки ...» *. Поэтому я предоставил имя используемой функции, документацию к функции и ссылку на множество примеров, которые показывают, как использовать эту функцию. Если вы чувствуете, что больше нужно сделать, не стесняйтесь делать это сами. –

+0

Stack Overflow - это сайт для вопросов программирования и разработки. Практически невозможно избежать предоставления функций, кода, использования и объяснений. К сожалению, это означает, что многие ответы будут копировать/вставлять в характер. Возможно, вам следует рассмотреть [Как написать хороший ответ на вопрос?] (Http://meta.stackexchange.com/q/7656/173448). Вы, кажется, единственный человек, который не отвечает на предоставление кода в ответе. Я нахожу вашу позицию, чтобы избежать ответа, потому что его служба написания кода почти смехотворна. – jww

 Смежные вопросы

  • Нет связанных вопросов^_^