dilsdgr8 Ответов: 0

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)

0 Ответов