Проблема при проверке самостоятельно созданного сертификата root, промежуточного и конечного пользователя openssl - PullRequest
0 голосов
/ 25 сентября 2018

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

Это команды, которые я 'm для создания сертификатов:

mkdir root interm end

# Root CA:
openssl ecparam -out root/privatekey.pem -name prime256v1 -genkey
openssl req -new -x509 -days 365 -key root/privatekey.pem -out root/certificate.pem -sha256

# Intermediate
openssl ecparam -out interm/privatekey.pem -name prime256v1 -genkey
openssl req -new -key interm/privatekey.pem -out interm/request.csr -sha256
openssl x509 -req -days 365 -in interm/request.csr -CA root/certificate.pem -CAkey root/privatekey.pem -out interm/certificate.pem -sha256 -CAcreateserial

# End user
openssl ecparam -out end/privatekey.pem -name prime256v1 -genkey
openssl req -new -key end/privatekey.pem -out end/request.csr -sha256
openssl x509 -req -days 365 -in end/request.csr -CA interm/certificate.pem -CAkey interm/privatekey.pem -out end/certificate.pem -sha256 -CAcreateserial

Теперь проверка промежуточного сертификата с корневым сертификатом проходит хорошо:

openssl verify -CAfile root/certificate.pem interm/certificate.pem 
interm/certificate.pem: OK

Но когда я пытаюсь проверить конечный сертификат, он терпит неудачу:

openssl verify -CAfile root/certificate.pem -untrusted interm/certificate.pem end/certificate.pem
error 24 at 1 depth lookup: invalid CA certificate
error end/certificate.pem: verification failed

Я неправильно создаю сертификаты?Я попытался добавить -verbose, но вывод остался прежним, не уверен, почему он говорит, что сертификат CA недействителен, он самопроверка ok:

openssl verify -CAfile root/certificate.pem root/certificate.pem
root/certificate.pem: OK

1 Ответ

0 голосов
/ 08 июня 2019

Что вам не хватает, так это то, что промежуточный сертификат должен быть помечен CA: TRUE

openssl x509 -noout -text -in cinterm/certificate.pem

X509v3 Basic Constraints: critical
            CA:TRUE, pathlen:0

Для того, чтобы получить это, создайте файл ca_intermediate.ext со следующим содержанием

[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

а затем запустить

openssl x509 -req -extfile ca_intermediate.ext -extensions v3_intermediate_ca -days 365 -in end/request.csr -CA interm/certificate.pem -CAkey interm/privatekey.pem -out end/certificate.pem -sha256 -CAcreateserial
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...