Cosa viene verificato in SSL_get_verify_result di OpenSSL

0

In OpenSSL viene utilizzata la seguente funzione per verificare i certificati.

SSL_get_verify_result

Ho esaminato il manuale qui . Ma non descrive in dettaglio cosa viene verificato. Puoi chiarirmi cosa verifica questa funzione? (ad esempio data di scadenza, catena di fiducia, ecc.). Per me è importante sapere come viene generato esattamente il risultato e quali sono i fattori su cui è costruita la verifica?

    
posta user9371654 20.12.2018 - 14:12
fonte

2 risposte

0

La risposta è in fondo alla pagina man a cui ti sei collegato nel VALORI RESTITUI , dove viene indicato "Qualsiasi altro valore: documentato in verify (1) .

Nella sezione VERIFICA OPERAZIONE della pagina di verifica, risponde alla tua domanda:

The verify program uses the same functions as the internal SSL and S/MIME verification, therefore this description applies to these verify operations too

Tutti i dettagli che hai richiesto sono quindi documentati nella sezione VERIFICA DEL FUNZIONAMENTO.

Mods, so che le risposte ai link sono normalmente disapprovate, ma il querent ha chiesto come trovare un link specifico.

EDIT:

Controlla Dave Thompson's risposta sotto , poiché è importante capire che questa chiamata restituisce solo il risultato della più recente esecuzione di validazione; in realtà non esegue una convalida del certificato da sola.

    
risposta data 21.12.2018 - 06:02
fonte
1

SSL_get_verify_result() in realtà non esegue alcuna verifica; restituisce (parte di) il risultato della verifica cert (se presente) eseguita durante l'ultimo handshake completo (se presente) sull'oggetto SSL specificato. Supponendo che tu voglia veramente sapere cosa ha fatto la verifica che , dipende molto dal codice dell'applicazione.

Se il codice imposta una richiamata con SSL_CTX_set_cert_verify_callback prima di creare l'oggetto SSL , la verifica durante l'handshake consiste interamente nel chiamare quel callback, indipendentemente da ciò che fa il callback. Se questa richiamata non è impostata, come dice la pagina man, viene utilizzata una "funzione di verifica integrata", che in realtà è X509_verify_cert() (che ha la sua pagina man non molto utile) e che che fa approssimativamente ciò che è descritto nella pagina man di verifica (1) a cui fa riferimento John, oltre ad alcune cose che sono state aggiunte nel tempo ma che non sono sempre state inserite nel doc (ad es. NameConstraints e DANE, per non parlare di alcuni controllo di revoca), ma questo controllo può essere modificato e "ottimizzato" da numerose opzioni e parametri, non tutti utilizzabili per verificare (1), e la maggior parte impostabile a entrambi il livello SSL_CTX o SSL , compreso un opzionale 'verify_callback' che è separato e molto diverso dal 'cert_verify_callback' citato sopra. Vedi le pagine man per SSL_[CTX_]set_verify[_depth] , SSL_[CTX_]load_verify_locations et rel, le funzioni X509_STORE_* e X509_STORE_CTX_* includendo X509_STORE_CTX_set0_param e relative X509_VERIFY_PARAM* funzioni in particolare X509_VERIFY_PARAM_set_flags .

E se questo non è abbastanza preciso, e potrebbe anche non esserlo, controlla la fonte - per la versione che sei (o sarà) in esecuzione, poiché ci sono stati alcuni cambiamenti in questa (abbastanza complessa) area nel tempo. Spiegare esattamente tutto ciò che fa, anche in una particolare versione, avrebbe (quasi sicuramente) superato il limite di risposta dello Stack e mi avrebbe richiesto circa una settimana, oltre a diventare presto obsoleto, quindi non lo farò. Se hai uno o pochissimi problemi specifici, ciò potrebbe essere risolvibile in un lasso di tempo pratico.

    
risposta data 21.12.2018 - 09:10
fonte

Leggi altre domande sui tag