openssl - сертификат с перекрестной подписью

openssl - сертификат с перекрестной подписью

Я хочу перекрестно подписать сторонний корневой центр сертификации ( third-party-ca) с помощью моего собственного корневого центра сертификации ( r1). (Предыстория:ограничение использования)

Для этого я использую

openssl x509-in third-party-ca.crt -CA /etc/pki/r1/ca.crt -CAkey /etc/pki/r1/private/ca.key -out third-party-ca-cross-signed.crt -set_serial 1000

Это работает, но сохраняет Authority Key Identifierиз third-party-ca, который необходимо изменить на Subject Key Identifierиз r1. (Для реального примера см. letsencryptISRG X1 с перекрестной подписьюкDST Корневой CA X3)

Я могу добавить еще один, Authority Key Identifierсоздав akiextи используя -extfile akiext. Однако это приводит к двум Authority Key Identifier.

Как я могу заменить существующий Authority Key Identifier?

решение1

В openssl x509командной строке нельзя выборочно удалять расширения; можно использовать -clrextдля удалениявсевведите расширения и настройте в них -extfileнужные вам уже существующие расширения (как минимум BC и KU)плюсновый(е). Обратите внимание, что публичные подчиненные или перекрестные сертификаты CA — такие как тот, на который вы ссылаетесь — скорее всего, содержат AIA и/или CRLDP, а также AKI,всеиз которых верны только для эмитента/материнской организации, которую вы заменяете, и поэтому должны быть заменены (или удалены).

В качестве альтернативы вы можете написать код, используяAPIпросто. Но это, вероятно, относится к SO илиможет бытьsecurity.SX вместо here. (И от вас ожидается выполнение части работы.)

В вашем конкретном примере ISRG Root X1 доступен как с перекрестной подписью Identrust DST X3, так икак корень-- если вы начинаете с корневого сертификата, у него нет AKIилиAIA/CRLDP, которые необходимо удалить.

Обновление: как показалопоследующий связанный вопросOpenSSL 3.0.0 и выше не допускает случай ввода без прав root; требуется, чтобы старый сертификат был самоподписанным (корневым). Комментарии в источнике указывают, что это всегда подразумевалось, хотя и не применялось эффективно ранее.

Связанный контент