openssl не находит сертификаты, если не указано с -CAfile

Я борюсь с 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 должен искать сертификаты. У кого-нибудь была похожая проблема?

1 ответ

Каталог, указанный в CApath, должен иметь специальную структуру. Из документов OpenSSL

Если CApath не равен NULL, он указывает на каталог, содержащий сертификаты CA в формате PEM. Каждый из файлов содержит один сертификат CA. Файлы ищутся по хэш-значению имени субъекта CA, которое должно быть доступно. Если существует более одного сертификата CA с одним и тем же хеш-значением имени, расширение должно быть другим (например, 9d66eef0.0, 9d66eef0.1 и т. Д.). Поиск выполняется по порядку добавочного номера независимо от других свойств сертификатов. Используйте утилиту c_rehash для создания необходимых ссылок

Если я не ошибаюсь, вы можете использовать каталог как CApath, если:

  • Он содержит файлы в формате pem, содержащие права доступа в каждом файле.
  • Вы запускаете c_rehash (или создаете вручную соответствующие символические ссылки) в нем.
Другие вопросы по тегам