[Gluster-devel] Glusterfs SSL capability

Jeff Darcy jdarcy at redhat.com
Fri May 17 16:12:44 UTC 2013


On 05/16/2013 08:02 PM, Nux! wrote:
> v3.4 is supposedly SSL capable. Can anyone please detail a bit how this
> feature can be used exactly? There doesn't seem to be any documentation on
> it.

Odd.  The feature has been available since before 3.3, and I know we've gone 
around a few times on documenting it, but I can't find anything either.  :(  As 
the author of the feature, I guess I should explain.

There are two options that control SSL usage:

	gluster volume set myvol client.ssl on
	gluster volume set myvol server.ssl on

TBH I don't remember why there are two, but I think I had a good reason at the 
time.  Anyway, these options control whether the transport type is set to ssl 
instead of socket on the client and server respectively.  To make it actually 
*work* you need to generate OpenSSL certificates (openssl req -new -x509 ...) 
and put them into the right places yourself.

	/etc/ssl/glusterfs.pem
	The node's *own* certificate.

	/etc/ssl/glusterfs.key
	Key for the above.

	/etc/ssl/glusterfs.ca
	Concatenation of certificates we accept.

These locations can be changed in your volfiles or from the "glusterfs" command 
line (--xlator-option transport.socket...) but not from the "gluster" CLI. 
Note that there are several caveats.

(1) The peers' certificates themselves must be in glusterfs.ca; we don't 
support any kind of certificate signing or PKI.  It wouldn't be hard to do so, 
but there's no way currently without changing code (to make verify_depth 
greater than zero).

(2) We use SSL only for encryption and authentication, not authorization. 
While you do need an authenticated identity to connect, we don't really care 
what that identity is and once you've connected we don't use it for any further 
access-control checks (there is a patch to do so).

(3) SSL is only for the data connections (glusterfs<->glusterfsd) and is 
explicitly disabled for control connections (glusterd<->anything).

(4) Turning on SSL also turns on transport multi-threading (because otherwise 
performance would be awful as other work gets blocked behind encryption in a 
single polling thread).  This is usually a performance benefit even without 
SSL, and some people do turn it on just for that, but it's less fully tested 
and supported than the usual threading model.

All that said, I'd be glad to have more people using SSL, and to hear about 
their experiences (including bug reports).  Long term, I think secure 
connections are going to be an absolute requirement in a significant number (if 
not a majority) of deployments, so the more mileage we get on it sooner the better.





More information about the Gluster-devel mailing list