O que verifica return: 1 significa na saída openssl

10

Eu não entendo a saída openssl. Executando o openssl da seguinte maneira:

#openssl s_client -connect google.com:443 -CAfile cacert.pem < /dev/null

Por fim, tudo está bem, pois o certificado da entidade final foi verificado OK: Verify return code: 0 (ok)

mas e quanto à verificação return:1no início da saída para os intermediários abaixo? O que isso significa ou para que serve?

depth = 3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority verificar retorno: 1
depth = 2 C = US, O = GeoTrust Inc., CN = GeoTrust CA global verificar retorno: 1
depth = 1 C = US, O = Google Inc, CN = Google Internet Authority G2 verificar retorno: 1
profundidade = 0 C = EUA, ST = Califórnia, L = Mountain View, O = Google Inc, CN = google.com verificar retorno: 1

---
Cadeia de certificados
 0 s: / C = EUA / ST = Califórnia / L = Mountain View / O = Google Inc / CN = google.com
   i: / C = EUA / O = Google Inc / CN = Google Internet Authority G2
 1 s: / C = EUA / O = Google Inc / CN = Google Internet Authority G2
   i: / C = EUA / O = GeoTrust Inc./CN=GeoTrust Global CA
 2 s: / C = EUA / O = GeoTrust Inc./CN=GeoTrust Global CA
   i: / C = EUA / O = Equifax / OU = Autoridade de certificação segura Equifax
---


jouell
fonte

Respostas:

13

A função de retorno de chamada de verificação (usada para executar a verificação final da aplicabilidade do certificado para o uso específico) recebe um campo por SSL chamado preverify_okaycampo que indica se a cadeia de certificados passou nas verificações básicas que se aplicam a todos os casos. A 1significa que essas verificações foram aprovadas.

int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)

A função confirm_callback é usada para controlar o comportamento quando o sinalizador SSL_VERIFY_PEER é definido. Ele deve ser fornecido pelo aplicativo e recebe dois argumentos: preverify_ok indica se a verificação do certificado em questão foi aprovada (preverify_ok = 1) ou não (preverify_ok = 0).

Isto é o que verify return:1está mostrando.

Você pode verificar o código se quiser mais detalhes:

int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
    {
    [ snip ]
    BIO_printf(bio_err,"verify return:%d\n",ok);
    return(ok);
    }
David Schwartz
fonte
Além disso, o doc integral vive aqui: openssl.org/docs/manmaster/ssl/SSL_CTX_set_verify.html
jouell