OpenSSL + CAPI: может найти сертификат CA в хранилище сертификатов Windows, не будет проверять сертификат сервера, используя его - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь использовать механизм CAPI с OpenSSL, чтобы использовать хранилище сертификатов Windows при подключении к брокеру MQTT, но у меня возникла проблема, когда он, похоже, не использует сертификат CA из хранилища.

(Это существо для MQTT упоминается в качестве контекста, но сам MQTT не вовлечен в проблему.)

Я вернулся к использованию openssl.exe для тестирования, чтобы устранить проблемы в моемсобственный кодЯ использую предварительно скомпилированные двоичные файлы v1.1.1a из здесь , как указано в вики OpenSSL.

Он может найти сертификат CA в хранилище сертификатов Windows через

openssl engine capi -t -post store_name:ROOT -post list_options:8 -post lookup_cert:mqtt

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

openssl s_client -connect 192.168.56.101:8883 -showcerts -engine capi

(я добавил сертификат CA в свой личный магазин для этого теста, так как яне удается найти способ передачи команд в механизм CAPI при использовании s_client, и по умолчанию используется личное хранилище.)

Клиентское соединение сообщает

engine "capi" set.

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

verify error:num=19:self signed certificate in certificate chain

, что, как я понимаю, означает, что корневой сертификат не может быть найден в магазине ипоэтому сервер и сертификат CA, предоставленные сервером, не являются доверенными, и поэтому корневой сертификат цепочки считается как самоподписанным, так и ненадежным.

Я установил, что сертификаты действительны при выполнении успешного подключенияIon (с OpenSSL, но без CAPI) в моем собственном клиентском приложении при непосредственном предоставлении файла сертификата CA.

Поэтому у меня следующие вопросы:

  • Чтобы облегчить тестирование, есть ли способпередавать команды движка в s_client?
  • Есть ли проблемы с проверкой сертификатов механизма CAPI?Мой поиск на сегодняшний день показывает, что он должен работать.
  • Есть ли что-то, что я мог пропустить в моей настройке?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...