Я борюсь с openssl несколько дней.
Я скомпилировал openssl на устройстве ARM, и когда я запускаю openssl s_client -connect google.com:443
соединение не удастся с error 20: unable to get local issuer certificate
.
Если я запустил эту команду, указав -CAfile /etc/ssl/certs/ca-certificates.crt
соединение будет работать и возвращается verify return code: 0 (ok)
. Еще один тест, который я сделал, - запустить команду с -CApath /etc/ssl/certs/
, в этом случае я все равно получу ошибка 20
Поскольку OPENSSLDIR - это / usr / lib / ssl, мне удалось связать его с / etc / ssl / certs, теперь в файловой системе этот каталог выглядит так:
ls -l /usr/lib/ssl
certs -> /etc/ssl/certs
Я не понимаю, что мне не хватает и как установить каталог, в котором openssl должен искать сертификаты. У кого-то была подобная проблема?
Каталог, указанный в CApath, должен иметь особую структуру. Из Документы OpenSSL
Если CApath не NULL, он указывает на каталог, содержащий сертификаты CA в формате PEM. Файлы каждый содержит один сертификат CA. Файлы ищутся по хэш-значению имени субъекта CA, которое, следовательно, должно быть доступно. Если существует более одного сертификата CA с одинаковым значением хэша имени, расширение должно быть другим (например, 9d66eef0.0, 9d66eef0.1 и т. Д.). Поиск выполняется в порядке следования добавочных номеров, независимо от других свойств сертификатов. Используйте утилиту c_rehash для создания необходимых ссылок
Если я не ошибаюсь, вы можете использовать каталог как CApath, если: