Libretls как установить корневой сертификат путь (Path содержит несколько корневых сертификатов)
Я попытался использовать tls_config_set_ca_path
Но, похоже, libTLS не использует файлы в наборе путей.
tls_config_set_ca_path-это успех. Но когда я использую tls_write(), возвращается приведенная ниже ошибка.
certificate verification failed: unable to get local issuer certificate
Что я уже пробовал:
Когда я использую
tls_config_set_ca_fileиспользуя тот же файл, он отлично работает.
Но мне нужно использовать
tls_config_set_ca_path
[Отредактировано, чтобы включить ответ на комментарий]
tls_init() cfg = tls_config_new() ls_config_set_ca_path(cfg, "/usr/local/etc/mycerts/CA-certificates") tls_config_set_protocols(cfg, TLS_PROTOCOL_TLSv1_3) ctx = tls_client() tls_configure(ctx, cfg) tls_connect_socket(ctx,readsoc, "abc") tls_write(ctx, buf, buflen)
Garth J Lancaster
вы можете использовать Улучшить вопрос чтобы обновить свой вопрос с помощью кода инициализации ? Каков код возврата из функции tls_config_set_ca_path ?
dilsdgr8
tls_init()
КС = tls_config_new()
ls_config_set_ca_path(cfg, "/usr/local/etc/mycerts/CA-сертификаты")
tls_config_set_protocols(КС, TLS_PROTOCOL_TLSv1_3)
СТХ = tls_client()
tls_configure(СТХ, cfg для)
tls_connect_socket(СТХ,readsoc, "Азбука")
tls_write(ctx, buf, buflen)
Garth J Lancaster
Итак, каков же код возврата от
tls_config_set_ca_path(cfg, "/usr/local/etc/mycerts/CA-certificates")звоните, как в
int tcscp = tls_config_set_ca_path(cfg, "/usr/local/etc/mycerts/CA-certificates")- мое предположение будет равно -1 ...
Stefan_Lang
Сам я никогда не использовал эти команды, но всякий раз, когда я устанавливаю путь с помощью какой-либо функции, я обычно добавляю окончательный '/'. Просто выстрел в темноте...
P.S.: Вы не забыли ведущую букву " т " в этом вызове tls_config_set_ca_path(), или это опечатка в вашем коде?
Garth J Lancaster
Я думаю, что это ошибка typo/cut&paste Stefan - я оставил ее такой, какой она была для OP .. хороший вызов на '/' в конце пути, хотя я надеюсь, что OP увидит это
Stefan_Lang
Я полностью ожидаю, что это будет опечатка, потому что в противном случае компилятор должен жаловаться. Но я видел слишком много случаев бессмысленных макроопределений, чтобы исключить ошибку, вызванную опечаткой, которую компилятор не заметил бы.
Кроме того, если в коде есть одна очевидная опечатка, которая делает его некомпилируемым, кто может сказать, что нет менее очевидных, которые этого не делают? :o)