how OpenSSL actually handles OCSP stapling response
OpensSL non fa nulla da solo in quest'area. Devi occuparti esplicitamente della pinzatura OCSP nel tuo codice, sia per segnalare che supporti la pinzatura e per convalidare e interpretare la risposta.
Does the OpenSSL check the signature, issuer key/name hashes of the response?
Se si utilizzano le funzioni corrette, è possibile farlo. La convalida di una risposta OCSP è per lo più simile alla convalida di un certificato o di un CRL, vale a dire la convalida della catena di affidabilità. A parte questo, devi verificare che la risposta OCSP sia effettivamente per il certificato corretto.
Does the response include OCSP responses for the whole certificate chain? If so, is there a way to know that one of the validations have failed?
Dipende da ciò che il server invia e da ciò che il client richiede (cioè singola risposta OCSP o multipla). E dal momento che devi implementare tutti i dettagli in ogni caso, hai anche le informazioni su quale parte della convalida ha avuto esito negativo.
To sum up, can I simply rely on 'Cert Status: good' field of the response? :)
No, non puoi semplicemente fidarti di qualsiasi risposta OCSP inviata dal server.
Devi fare tutta la convalida della risposta OCSP da solo. A parte le parti già citate, ciò comporta anche il controllo se la risposta è obsoleta (troppo vecchia). E, naturalmente, il certificato potrebbe essere stato revocato negli ultimi minuti, ma la risposta è ancora valida, ovvero OCSP non fornisce informazioni in tempo reale sullo stato di un certificato.
Si noti che solo gli strumenti o le librerie basati su OpenSSL implementano la graffatura OCSP e / o OCSP e, anche se lo fanno, di solito non è abilitata per impostazione predefinita. Questo non è molto diverso con altre implementazioni TLS.