[ 
https://issues.apache.org/jira/browse/NET-579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14708548#comment-14708548
 ] 

Simon Arlott commented on NET-579:
----------------------------------

The hostname has to be retained (there's no API change required for that).

For Java 1.7+, there needs to be a way to call 
setEndpointIdentificationAlgorithm("HTTPS") on the SSLParameters for the 
SSLSocket, before negotiating TLS.

For everything else (i.e. Android), there needs to a post-TLS verification 
check using the SSLSession (which can be obtained from the SSLSocket) and the 
hostname. This could either be a protected method that has to be overridden or 
a callback interface that takes a hostname and SSLSocket/SSLSession and returns 
a boolean verification result.

> SSL/TLS SocketClients do not verify the hostname against the certificate
> ------------------------------------------------------------------------
>
>                 Key: NET-579
>                 URL: https://issues.apache.org/jira/browse/NET-579
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP, IMAP, POP3, SMTP
>    Affects Versions: 3.3
>         Environment: Java 1.7 (earlier versions cannot verify the hostname)
>            Reporter: Simon Arlott
>            Priority: Critical
>              Labels: security
>         Attachments: NET-579.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Every subclass of SocketClient that does SSL/TLS will never verify the 
> hostname of the server against the certificate. This means that any valid 
> certificate for any CA in the default trust store will be accepted without 
> error.
> SocketClient should be modified to store the hostname, and 
> SMTPSClient/FTPSClient/IMAPSClient/POP3SClient should use it when negotiating 
> SSL/TLS.
> Java 1.7 has support for verifying the hostname if 
> SSLParameters.setEndpointIdentificationAlgorithm("HTTPS") is used.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to