Ex: Re: : CAS proxy validation failure - Configured TLS trust engine was not used
Paul B. Henson
henson at cpp.edu
Wed Aug 19 05:04:55 UTC 2020
> From: Brent Putman
> Sent: Tuesday, August 18, 2020 3:28 PM
>
> only the TCP socket. But if that's wrong and it doesn't perform server TLS via
> JSSE on subsequent new HTTP requests over a cached connection, then that
> sounds like the culprit.
No, it's definitely doing TLS on every request; the CAS proxy callback is not available via http.
However, after enabling debugging at the JSSE layer and reviewing some packet captures of successful and failed attempts, I think I tracked it down. If I disable SSL session caching and SSL session tickets on the server side it works every time.
When resuming an existing cached session, it doesn't go through the full handshake process, it uses a more efficient abbreviated one. I bet it does not reverify the server certificate and rerun the trust engine for a session that has been previously validated and is simply being reused. I poked around in the JSSE code a bit but nothing jumped out as proving that hypothesis, but I'm pretty burned out of digging through obscure code so I might've missed it :). I would have thought it to be fairly common to have SSL session caching enabled on a server? I guess either Scott's endpoints are not doing SSL session caching or for some reason this bug is specific to the CAS use of the httpclient.
Hopefully you'll be able to get to the bottom of it, for now I can just leave SSL session caching disabled for my testing. It looks like you can disable SSL caching in the httpclient? I guess in the worst case you could do that or at least have an option so a user could do it if they run into the issue.
> request. If not, we'll have to go from there. (I don't think using their other
> connection pool impl BasicHttpClientConnectionManager is appropriate for a
> server-side multi-threaded use case.)
It would have worked around this issue :). I wasn't necessarily advocating for it as a permanent solution, but it would have been an interesting test to see how it behaved. Also, I am still seeing the issue from JSPT-102 I reported with 3.4.6 with 4.0.1 :(. I think that is also an issue on the httpclient side, it's never calling Socket.close() on the connection. I think this is also environment dependent, it only occurs when the server closes the connection rather than the client. Maybe while you are mucking around with httpclient internals you could sort this one out too :). I can do any further diagnosis or testing you need. Hmm, I guess as long as I am bugging you about stuff ;), I'd appreciate your feedback on the CAS PGT encoding patch in IDP-1655 whenever you have the time to look at it. It probably won't pass muster as is, but hopefully it is not too far off the mark.
Thanks much to both of you for your assistance with this issue, let me know if I can be of any further help fixing it.
java 27334 jetty 197u IPv6 767903 0t0 TCP beric-dev.unx.cpp.edu:55750->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 198u IPv6 767916 0t0 TCP beric-dev.unx.cpp.edu:55754->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 199u IPv6 769592 0t0 TCP beric-dev.unx.cpp.edu:55756->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 200u IPv6 769677 0t0 TCP beric-dev.unx.cpp.edu:55758->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 201u IPv6 769846 0t0 TCP beric-dev.unx.cpp.edu:55760->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 202u IPv6 770104 0t0 TCP beric-dev.unx.cpp.edu:55762->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 203u IPv6 769892 0t0 TCP beric-dev.unx.cpp.edu:55764->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 204u IPv6 771292 0t0 TCP beric-dev.unx.cpp.edu:55766->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 205u IPv6 770399 0t0 TCP beric-dev.unx.cpp.edu:55768->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 206u IPv6 771524 0t0 TCP beric-dev.unx.cpp.edu:55770->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 207u IPv6 771013 0t0 TCP beric-dev.unx.cpp.edu:55774->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 208u IPv6 771021 0t0 TCP beric-dev.unx.cpp.edu:55776->davos.unx.cpp.edu:https (CLOSE_WAIT)
java 27334 jetty 209u IPv6 773529 0t0 TCP beric-dev.unx.cpp.edu:55778->davos.unx.cpp.edu:https (CLOSE_WAIT)
More information about the users
mailing list