OpenSSL продолжает говорить мне «невозможно получить сертификат локального эмитента»

Я использую CentOS, в которой установлен OpenSSL 1.0.2k-fips, и я создал и установил вместе с ним версию 1.1.0g как часть установки HTTP2, описанной здесь: https://www.tunetheweb.com/performance/http2/

Я использовал версию 1.1. 0g нормально, но недавно я обновил сертификаты, и теперь он кажется потерянным при попытке проверить ЦС. Расположение файла CA не изменилось, версия 1.0. Версия 2k-fips кажется ей вполне подходящей, но 1.1.0g не проходит мимо жалоб:

Verify return code: 20 (unable to get local issuer certificate)

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

Я подумал, что, возможно, мне стоит пересобрать 1.1.0g, но это ничего не меняет. Я также пробовал использовать параметр -CApath для команды openssl , вот так (используя тот же каталог, что и в 1.0.2k-fips):

echo | /usr/local/ssl/bin/openssl s_client -connect example.com:443 -CApath /etc/pki/tls

Я также пробовал -CAfile , прямо указывающий на ca-bundle.crt , который, как я знаю, имеет правильные сертификаты (1.0.2k-fips использует их без проблем), без изменений.

Я не понимая, почему он не принимает мои сертификаты, и задаюсь вопросом, могла ли эта проблема существовать до того, как я изменил сертификаты (я проверил, работают ли они после их изменения, возможно, 1.1. 0g к тому моменту уже был сломан).

Я думаю, это могло быть связано с обновлениями, выполненными в системе, нарушением какой-либо ссылки или файла, но где посмотреть, когда все сертификаты выглядят нормально? Или в 1.1.0g отсутствуют какие-то другие / дополнительные сертификаты, на которые мне нужно указать?

4
задан 9 March 2018 в 12:29
1 ответ

Вы можете заставить s_client показать вам цепочку сертификатов с помощью -showcerts :

openssl s_client -connect example.com:443 -showcerts </dev/null

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

Вы можете быстро получить краткую информацию о цепочке сертификатов, отфильтровав вывод:

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null |
sed -e '1,/Certificate chain/d' -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/d' -e '/---/,$d'
0
ответ дан 3 December 2019 в 04:19

Теги

Похожие вопросы