
Quero assinar uma assinatura raiz de terceiros ( third-party-ca
) com minha própria raiz ca ( r1
). (Fundo:restringindo o uso)
Para fazer isso, eu uso
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
Isso funciona, mas mantém o Authority Key Identifier
do third-party-ca
, que precisaria ser alterado para o Subject Key Identifier
do r1
. (Para um exemplo prático, consulte letsencryptISRG X1 com assinatura cruzadaporCA Raiz DST X3)
Consigo adicionar outro Authority Key Identifier
criando um akiext
e usando -extfile akiext
. No entanto, isso resulta em dois Authority Key Identifier
.
Como posso substituir o existente Authority Key Identifier
?
Responder1
Na openssl x509
linha de comando, você não pode excluir seletivamente extensões; você pode usar -clrext
para soltartodosinsira extensões e configure nas -extfile
extensões pré-existentes que você deseja (no mínimo BC e KU)maiso(s) novo(s). Observe que os certificados públicos subordinados ou cruzados - como aquele que você vincula - provavelmente contêm AIA e/ou CRLDP, bem como AKI,todosdos quais são corretos apenas para o emissor/pai que você está substituindo e, portanto, devem ser substituídos (ou removidos).
Alternativamente, você poderia escrever código; fazendo isso usando oAPIé simples. Mas isso provavelmente pertence ao SO outalvezsecurity.SX em vez de aqui. (E espera-se que você faça parte do trabalho.)
No seu exemplo específico, ISRG Root X1 está disponível com assinatura cruzada por Identrust DST X3 ecomo uma raiz- se você iniciar a partir do certificado raiz, não haverá AKIouAIA/CRLDP que precisam ser removidos.
Atualização: conforme revelado por umpergunta relacionada subsequenteOpenSSL 3.0.0 up não permite o caso de entrada não-root; requer que o certificado antigo seja autoassinado (uma raiz). Os comentários na fonte indicam que isso sempre foi pretendido, embora não tenha sido efetivamente aplicado antes.