В конечном счете, я пытаюсь настроить сервер 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