Рейтинг:0

openssl не будет проверять сертификаты за пределами промежуточного ЦС, ошибка 20 даже при использовании CApath или CAfile

флаг in

В конечном счете, я пытаюсь настроить сервер ocsp на Ubuntu 20.4, но пока не могу даже проверить какие-либо сертификаты, выданные моим промежуточным центром сертификации.

Я настроил ca-root с именем ca-root.mydomain.org. Я также настроил промежуточный ЦС с именем ca-sub.mydomain.org. Наконец, есть мой будущий сервер ocsp, ocsp-server.mydomain.org.

Сначала я создаю самоподписанный сертификат ca_root_cert_file.Затем у меня есть сертификат ca-root для ca-sub.mydomain.org, ca_sub_cert_file. Затем я создаю pem-файл цепочки сертификатов «sub-chain.pem». Он содержит сертификат sub-ca, затем сертификат ca-root в указанном порядке.

Затем я копирую файлы ca_root_cert_file и ca_sub_cert_file в каталог «$CA_ROOTS_HASHES_DIR» и копирую все корневые сертификаты в /etc/ssl/сертификаты там также. Я запускаю утилиту openssl c_rehash -v "$ CA_ROOTS_HASHES_DIR". Я ожидаю, что теперь я могу использовать это в качестве аргумента для -CApaths параметр проверка openssl.

Затем у меня есть сертификат ca-sub для ocsp-server.mydomain.org. Затем я создаю pem-файл цепочки сертификатов «ocsp_signer_chain.pem». Он содержит сертификат ocsp-сервера, сертификат sub-ca, затем сертификат ca-root в указанном порядке. Я не ожидаю, что мне понадобится этот ocsp_signer_chain.pem, но он у меня есть.

Я могу использовать openssl для проверки файла ca_sub_cert_file:

`openssl verify -verbose -show_chain -CApath "$CA_ROOTS_HASHES_DIR" "$ca_sub_cert_file"`
ХОРОШО
Цепь:
depth=0: C = США, ST = Калифорния, L = Тихоокеанский регион, O = Mydomain, CN = ca-sub.mydomain.org (ненадежный)
depth=1: C = США, ST = Калифорния, L = Тихоокеанский регион, O = Mydomain, CN = ca-root.mydomain.org, адрес электронной почты = [email protected]

Но я не могу проверить ocsp-server_cert_file. я всегда получаю ошибка 20 при глубине поиска 0: невозможно получить сертификат локального эмитента. Я пробовал использовать CAfile с sub-chain.pem, ocsp_signer_chain.pem и ocsp_signer_chain.pem. -CApath "$CA_ROOTS_HASHES_DIR". Я пробовал с и без -ненадежный "$ca_sub_cert_file"

openssl verify -verbose -show_chain -CApath "$CA_ROOTS_HASHES_DIR" -untrusted "$ca_sub_cert_file" "$ocsp-server_cert_file"`
C = США, ST = Калифорния, L = Тихоокеанский регион, O = Mydomain, CN = ocsp-signer.mydomain.org
ошибка 20 при глубине поиска 0: невозможно получить сертификат локального эмитента
ошибка ocsp.mydomain.org_ocspserver_ocsp-signing.crt: проверка не удалась

Что я делаю не так? Я искал несколько дней, но ответы, которые я нашел, заканчиваются использованием CApath или CAfile.

Я удивлен, что даже при проверке файла ca_sub_cert_file openssl сообщает «ca-sub.mydomain.org (ненадежный)». Я ожидал, что наличие сертификата в CA_ROOTS_HASHES_DIR сделает его доверенным. :/

Мои файлы ca-conf работают для самоподписания и подписания ca-sub, что наводит меня на мысль, что это не проблема conf. Однако я уже узнал, что легко сделать неверные файлы conf без предупреждения от openssl. Вот мои файлы conf на GITHUB

Вот раздел ca_extensions обоих файлов ca.conf.

[ ca_extensions ]
basicConstraints = критический, CA: true
keyUsage = digitalSignature, keyEncipherment, keyCertSign, cRLSign
subjectKeyIdentifier = хэш
authorKeyIdentifier = идентификатор ключа: всегда, эмитент
расширенный ключ использования = серверная аутентификация
crlDistributionPoints = URI:http://ca-root.mydomain.org/crl/mydomain.crl.pem
authorInfoAccess = OCSP;URI:http://ca-root.mydomain.org:8083
dave_thompson_085 avatar
флаг jp
(1) Процесс, который вы описываете, является правильным, если детали, которые вы пропустили, верны, и ** он работает для меня ** 18.04 (у меня еще не установлено 20.04). В частности, есть ли у вас BasicConstraints и KeyUsage в сертификатах CA? (2) В `verify -show_chain` строки `(untrusted)` указывают на _часть_ цепочки, полученную из ненадежных источников, а не из доверенного хранилища; пока результатом является `file: OK` (и цепочка _заканчивается_ в корне из хранилища доверенных сертификатов или другой привязки с `-partial_chain`), тогда проверка (проверка) прошла успешно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.