Por que não posso verificar essa cadeia de certificados?

10

Eu tenho três certificados em uma cadeia:

  • root.pem
  • intermediate.pem
  • john.pem

Quando eu os examino usando openssl x509 -in [filename] -text -noout eles parecem bem, o root.pem parece ser auto-assinado (Emissor == Assunto), e o Assunto de cada certificado é o Emissor do próximo, como esperado. / p>

E, de fato, posso verificar a cadeia até o certificado intermediário:

$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK

No entanto, o john.pem falha:

$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate

No melhor de meu conhecimento, isso significa que openssl é incapaz de encontrar o emissor para intermediate.pem. O que não faz sentido, já que o root.pem é de fato o emissor do intermediate.pem.

O que estou perdendo?

    
por Jong Bor 22.04.2015 / 22:16

2 respostas

6

Acontece que openssl verify não permite vários parâmetros -CAfile . Em vez disso, tenho que concatenar root.pem e intermediate.pem em um único arquivo e passar isso como um parâmetro.

$ cat root.pem intermediate.pem > concat.pem
$ openssl verify -CAfile concat.pem john.pem
john.pem: OK
    
por 22.04.2015 / 22:18
9

Você não precisa agrupar os dois certificados para verificá-los.

Se você possui os três certificados a seguir:

  • root.pem - armazena um certificado autoassinado.
  • intermediate.pem - armazena um certificado assinado por root.pem
  • john.pem - armazena um certificado assinado por intermediate.pem

E você confia apenas em root.pem, então você deve verificar john.pem com o seguinte comando:

openssl verify -CAfile root.pem -untrusted intermediate.pem john.pem

Se você tivesse muitos intermediários, poderia encadear apenas -untrusted intermediate2.pem -untrusted intermediate3.pem ...

    
por 13.10.2015 / 19:29