Verificar a cadeia de certificados pem usando openssl

1

Estou tentando escrever um código que recebe um arquivo pcap como entrada e retorna certificados inválidos dele.

Eu analisei cadeias de certificados e estou tentando confirmá-las. Porque eu obtenho as cadeias de certificados fora de um pcap o comprimento da cadeia não são constantes (às vezes eles incluem apenas 1 certificado que é auto-assinado (e válido)).

Seja cert0.pem o certificado de servidores e certk.pem o certificado de CAs raiz.

De acordo com minha pesquisa on-line, estou tentando verificar o certificado da seguinte forma:

  1. Crie um arquivo certs.pem que contenha a cadeia de certificados na ordem: certk.pem , certk-1.pem , ..., cert0.pem

  2. use o comando ( ca.pem é um arquivo contendo certificados raiz):

    openssl verify -CAfile ca.pem certs.pem 
    

Mas, às vezes, a verificação dá errado, mesmo para certificados válidos, como na seguinte saída:

C = US, O = GeoTrust Inc., CN = GeoTrust Global CA <br>
error 20 at 0 depth lookup: unable to get local issuer certificate<br> 
error certs.pem: verification failed

por favor me ajude, como posso verificar a cadeia de certificados?

Além disso, há uma maneira de adicionar uma verificação de nome de host na mesma linha? (Eu tentei adicionar " -verify_hostname name " mas, novamente, a saída foi inesperada).

    
por usr371 05.04.2017 / 12:47

1 resposta

0

Para a validação remota de certificados, o erro mencionado aqui diz que o primeiro certificado local (profundidade 0) no seu arquivo de cadeia que você está tentando verificar é certk.pem como certificado de CA raiz existe / importado no seu repositório de certificados confiáveis de cliente local do qual você está realizando sua verificação.

As stated at thawte.com support site:

This is the verification output of the Server Certificate sent by the server. The server sends its complete chain consisting of 2 certificates, one (depth 0) being the server's certificate "CN=www.yourdomain.com" and the other one being the CA certificate "CN=Thawte Server CA". As all root certificates, this certificate is self-signed.

In order to avoid this error, your client must have a local copy of the root CA certificate in their trusted certificate store, either in CAfile of CApath.

TAMBÉM: Considere usar a opção -show_chain verify para exibir mais detalhes e / ou erros na sua cadeia de certificados. Observe que esse comportamento de erro é esperado e, por padrão, ao verificar um certificado de uma CA não confiável. Você pode verificar os códigos de erro no wiki do openssl

.

    
por 06.04.2017 / 18:54