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

Sriharsha Chintalapani commented on KAFKA-1684:
-----------------------------------------------

[~junrao] [~jkreps] [~gwenshap] [~jjkoshy] 
  Hi Everyone,
    I am trying to setup a pattern for both ssl and kerberos auth. The above 
patch include SSL auth for socket server. Please ignore the changes around 
KafkaServer and SockerServer way of creating acceptors as there is work done in 
KAFKA-1809.
    Based on the comments before I didn't extend any socketChannel instead 
SSLChannel more of a wrapper around socketChannel. The SSL handshake done using 
non blocking I/O and without any thread.sleeps . Since SocketServer.processor 
depends on socketChannels selection I had to use a ConcurrentHashMap which 
stores the socketChannel as key and ChannelWrapper as the value. The other 
option I've is to extend the SocketChannel or use the SelectionKey attachment 
but we are using this attachment for request and response.
   The patch also contains a unit test in SocketServerTest which generates 
self-signed certs and runs the socket server using those also
  sends a request.
   I also have GSSChannel for KAFKA-1686 which does the kerberos auth in 
similar pattern to SSLChannel. Once this patch gets reviewed, based on the 
feedback I'll change the SSL and kerberos patches.
   I appreciate any feedback on the above patch.


> Implement TLS/SSL authentication
> --------------------------------
>
>                 Key: KAFKA-1684
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1684
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: security
>    Affects Versions: 0.9.0
>            Reporter: Jay Kreps
>            Assignee: Ivan Lyutov
>         Attachments: KAFKA-1684.patch, KAFKA-1684.patch
>
>
> Add an SSL port to the configuration and advertise this as part of the 
> metadata request.
> If the SSL port is configured the socket server will need to add a second 
> Acceptor thread to listen on it. Connections accepted on this port will need 
> to go through the SSL handshake prior to being registered with a Processor 
> for request processing.
> SSL requests and responses may need to be wrapped or unwrapped using the 
> SSLEngine that was initialized by the acceptor. This wrapping and unwrapping 
> is very similar to what will need to be done for SASL-based authentication 
> schemes. We should have a uniform interface that covers both of these and we 
> will need to store the instance in the session with the request. The socket 
> server will have to use this object when reading and writing requests. We 
> will need to take care with the FetchRequests as the current 
> FileChannel.transferTo mechanism will be incompatible with wrap/unwrap so we 
> can only use this optimization for unencrypted sockets that don't require 
> userspace translation (wrapping).



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

Reply via email to