Как я могу узнать, что у меня есть правильный промежуточный сертификат в цепочке сертификатов?

При создании сертификата вручную вы часто делаете что-то вроде этого, добавляя промежуточный сертификат к своему собственному (а иногда и к корневому ЦС):

# Concatenate intermediate certificate and root certificate
cat ${CERTNAME}.single.pem DigiCertSHA2ExtendedValidationServerCA.pem DigiCertHighAssuranceEVRootCA.pem > ${CERTNAME}.pem

Недавно я добавил промежуточный сертификат к сертификат, выданный другим ЦС, и, конечно же, Chrome предупредил меня, что он не может проверить сертификат. Интересно, как я могу узнать это заранее, используя, например, openssl или keytool , чтобы гарантировать, что я присоединяю только те сертификаты к цепочке, которые имеют смысл.

При создании " человекочитаемый дамп "промежуточного сертификата Buypass. Я получаю следующее:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            1b:78:1c:6d:5e:34:ce:1f:77
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = NO, O = Buypass AS-983163327, CN = Buypass Class 2 Root CA
        Validity
            Not Before: Mar 25 12:17:10 2019 GMT
            Not After : Oct 26 09:16:17 2030 GMT
        Subject: C = NO, O = Buypass AS-983163327, CN = Buypass Class 2 CA 2
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:9c:ab:67:c6:96:4b:0d:0f:91:d2:ec:ca:cc:33:
                    2b:f3:72:fc:0e:7f:b9:4e:84:a9:0f:7d:73:aa:26:
...

(используя openssl x509 -in my-cert.pem -noout -text )

Поле Тема в этом промежуточном сертификате совпадает с полем Issuer в моем собственном сертификате, поэтому я предполагаю, что мог бы извлечь его и grep, но хотя этого, вероятно, будет достаточно в 99% случаев, этого не произойдет кажется мне правильным :) Есть ли какая-то подпись, которую я могу использовать для проверки "происхождения" между ними?

1
задан 21 October 2020 в 19:24
1 ответ

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

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

Таким образом, если у вас есть сертификат с идентификатором ключа центра сертификации (AKI) 1234567890abcdef, он будет подписан ЦС, чей идентификатор ключа субъекта (SKI) также 1234567890abcdef. ]. Вы можете использовать это, чтобы проследить цепочку.

2
ответ дан 21 October 2020 в 17:22

Теги

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