[Twisted-Python] Log in - state of the art?
exarkun at divmod.com
exarkun at divmod.com
Sat Nov 6 11:04:43 MST 2004
On Sat, 06 Nov 2004 12:48:12 -0500, Itamar Shtull-Trauring <itamar at itamarst.org> wrote:
>On Sat, 2004-11-06 at 18:39 +0100, Andrea Arcangeli wrote:
>
> > this works fine and the connection is aborted if the certificate is
> > wrong, but I can't intercept the exception to print a meaningful message
> > to the user. This is not a big problem though it'll prevent me to ask
> > the user to autosubmit the stack trace to the server for debugging
> > purposes.
>
> Please add an issue in the bug/feature tracker about this
> (http://twistedmatrix.com/bugs/) and put me on the nosy list. If it's
> not in the bug tracker it's not likely to get added cause we'll forget.
>
There's already a bug in the tracker, and I added some code along these lines yesterday.
However, after some discussion with James Knight, I don't think the set_verify OpenSSL API is of any relevance to this use case. Andrea would probably be better off verifying the client certificate at a later time. The discussion of exactly where really belongs on the twisted-web mailing list, but as far as the SSL details are concerned, rejecting the certificate at the handshake verification time causes the handshake to fail; while it is possible that this is a non-fatal error, many implementations will simply drop the connection anyway.
When performing an application-level certificate verification subsequently, a secure communication channel has been established and can be used to communicate the error to the user as, say, a web page informing them of the invalidity of their certificate. The drawback of this approach is that it allows attackers to charge you the cost of a full SSL handshake and a bit of encrypted traffic. The advantages seem to far outweigh this.
A further problem with the OpenSSL verify callback is that it is synchronous and called in the IO thread. For any non-trivial application, this is likely to end up blocking the reactor in unacceptable ways.
Jp
More information about the Twisted-Python
mailing list