#3916: Mutt 1.8: TOFU approach bails out on first fail or reject, not offering higher links of the cert' chain --------------------------+---------------------- Reporter: kratem32 | Owner: mutt-dev Type: enhancement | Status: new Priority: minor | Milestone: 1.8 Component: crypto | Version: Resolution: | Keywords: tofu --------------------------+----------------------
Comment (by kempniu): Replying to [comment:34 m-a]: > To make a reasonable comment, I'd need to know if OpenSSL allows short- circuiting the chain, and write some experimental code. In doubt we might have to run the callback on the entire chain, pretending success, logging OpenSSL's and mutt's view of "verified" and "trusted" separately, storing intermediate data, and defer the whole approval and decision making to the point when we get called back for the host certificate, and then use the entire data set. Quite a bit of an effort, for a quite unique feature... Sounds workable, but before you start coding, let me suggest another idea which is a generalization of Kevin's idea. What if we add a configuration variable like `ssl_verify_depth` which would determine how deep from the leaf we are willing to perform any checks. By default the whole chain would be checked, but if the user desires so, verification could be narrowed down to the leaf certificate itself (value = 1) or somewhere between the root and the leaf (value > 1). This could be implemented by simply returning 1 somewhere early inside `ssl_verify_callback()` for every certificate which is deeper in the chain than the requested verification depth so that no prompts for such certificates are displayed. Kind of like what `SSL_set_verify_depth()` does, but without returning an error when the chain is longer than the requested verification depth. Note that I have not given this idea a lot of thought yet, so I might be missing something obvious. The only scenario I can think of right now that would be tricky to handle using this solution is if the length of the certificate chain presented by the user's e-mail provider varies frequently and the user would still like to trust some intermediate CA, but this starts getting a bit too far-fetched IMHO. -- Ticket URL: <https://dev.mutt.org/trac/ticket/3916#comment:37> Mutt <http://www.mutt.org/> The Mutt mail user agent