On Thu, 22 Feb 2024 15:23:13 GMT, Jaikiran Pai <[email protected]> wrote:

>> Can I please get a review of this change which proposes to fix 
>> https://bugs.openjdk.org/browse/JDK-8326381?
>> 
>> As noted in the JBS issue, the implementation in `setNeedClientAuth()` and 
>> `setWantClientAuth()` of `com.sun.net.httpserver.HttpsParameters` wasn't 
>> matching the API specification. The commit in this PR fixes that issue and 
>> it now matches the API specification as well as what is done in 
>> `javax.net.ssl.SSLParameters` class.
>> 
>> Additionally, as noted in the JBS issue, the (internal class) 
>> `sun.net.httpserver.SSLStreams` had a bug where it could end up resetting 
>> the `needClientAuth` flag on the `SSLEngine` because of the way the 
>> `setNeedClientAuth()` and `setWantClientAuth()` methods were being called on 
>> the `SSLEngine`. This too has been fixed in this PR.
>> 
>> A new jtreg test has been introduced to reproduce the issue in the 
>> `HttpsParameters` class and verify this fix.
>
> Jaikiran Pai has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - introduce a test to verify the server honours needClientAuth and 
> wantClientAuth when set through HttpsParameters
>  - deprecate the SSL parameters related methods on HttpsParameter

src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsParameters.java 
line 94:

> 92:      *
> 93:      * @deprecated It is recommended that the SSL parameters be 
> configured and
> 94:      * read through the use of {@link SSLParameters}.

One thing of importance here is that the `HttpsParameters` class has a 
`setSSLParameters(SSLParameters x)` method but doesn't have a `SSLParameters 
getSSLParameters()` method. So even though this deprecation message says "... 
read through the use of SSLParameters", the `HttpsParameters` class itself 
doesn't provide the `SSLParameters` instance to read from. But that should be 
OK, since the `HttpsParameters` class is just an intermediary for configuring 
the `HttpsConfigurator`. The server on each new connection will construct a 
fresh instance of `HttpsParameters` and call the (application specific) 
`HttpsConfigurator.configure(HttpsParameters p)` where the application can 
construct and set a `SSLParameters` of choice on the `HttpsParameters`. So the 
application code already has access to the `SSLParameters` through which it can 
read the necessary SSL parameters.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17940#discussion_r1499449320

Reply via email to