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

Powell Molleti commented on ZOOKEEPER-236:
------------------------------------------

Hi Abe,

I am more then happy to combine efforts and collaborate. I think the 
significant amount of work is testing which is what I am attempting to get it 
right in the Trunk patch which also has Netty support when compared to work on 
branch-3.5 (this patch).

This patch has support for configuration of for Truststore. Hence if the admin 
provides a cert chain that contains the CA(s) or for that matter if the 
Truststore contains all the self signed certs it should also work. I did not do 
extensive testing for this in this branch (I did this for branch-3.4, hence I 
think it should work).

Let me point you to the code and let me know if this can work or is what you 
are expecting:

createSSLContext() calls always chain Trustmanagers via X509ChainedTrustManager 
class with Truststore manager first i.e ZKX509TrustManager class and dynamic 
trust verification via ZKPeerX509TrustManager class.

Client side SSL socket creation:
https://github.com/apache/zookeeper/pull/185/files#diff-74d86ae5e83698ad62aada32dcbe615eR53

Quorum server side SSL socket creation:
https://github.com/apache/zookeeper/pull/185/files#diff-eb0052bc7ed160b8dee226f2ed1bdad2R51

I do think we need consensus here if there is need or want to support dynamic 
reconfiguration with SSL in a fault-tolerant way. By which I mean, if I 
understand correctly, both the operations of managing the certs (add/remove of 
certs) and reconfig() API to change members of a quorum have to be 
fault-tolerant. reconfig() is atomic hence no issue there. But then that leaves 
managing the certs for the Quorum which is a non trivial problem and there 
exists a solution I think that does need support in the guts of ZK. But I think 
we can simplify the orchestration of Zookeeper with SSL if it is SSL aware.

CA seems like the best way and simple way to go till such a time arrises when 
the CA has to be changed. Also prevalent security considerations recommend 
revoking the cert of the Quorum member that is removed. Again how do we 
accomplish this in a fault-tolerant way. Hence there is some work still left to 
do in CA case.

If we do not consider fault-tolerance for SSL config management or take a 
stance that ZK does not have to solve this for the admin then just providing a 
Truststore would suffice.

Also regarding the path forward do you think we should aim for a Trunk patch or 
patch to 3.5?. Also should we split the effort two phases,  first without Netty 
and then perhaps bring in Netty etc.

Let me know if I got something wrong and what do you think about bringing in 
Netty support for Quorum communication.
Cheers
Powell.



> SSL Support for Atomic Broadcast protocol
> -----------------------------------------
>
>                 Key: ZOOKEEPER-236
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-236
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: quorum, server
>            Reporter: Benjamin Reed
>            Assignee: Abraham Fine
>            Priority: Minor
>
> We should have the ability to use SSL to authenticate and encrypt the traffic 
> between ZooKeeper servers. For the most part this is a very easy change. We 
> would probably only want to support this for TCP based leader elections.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to