Hi all,

I am trying to setup internode and client encryption on cassandra. I set up a small ca, generated the certificates, distributed them and configured the nodes to use them.

Internode encryption worked straight forward, cqlsh after I added "--ssl".

But I am not able to setup OpsCenter (running 5.1.1). Two issues:

1. I added the ca file path, for me /etc/opscenter/cassandra_ca.pem, as asked. I cant save the cluster until I add a keystore even if I did not set a mark for client verification - also I cant find any documentation which keystore is meant here. Since OpsCenter is python these are obviously not the jks keystores from cassandra.

I guess that it is meant in that way, the individual nodes present thier certificate to opscenter which would verify it against the ca-store.

2. Trying to connect gives me an error in opscenterd.log:

2015-05-26 10:34:27+0000 [] INFO: Using SSL when checking thrift connection: /etc/opscenter/cassandra_ca.pem, client_pem=None, client_key=None,
validate=True
2015-05-26 10:34:27+0000 [] INFO: Starting factory <opscenterd.ThriftService.NoReconnectCassandraClientFactory instance at 0x7fa490ff97a0>
2015-05-26 10:34:27+0000 [] Unhandled Error
        Traceback (most recent call last):
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/python/log.py", line 84, in callWithLogger
            return callWithContext({"system": lp}, func, *args, **kw)
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/python/log.py", line 69, in callWithContext
            return context.call({ILogContext: newCtx}, func, *args, **kw)
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/python/context.py", line 59, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/python/context.py", line 37, in callWithContext
            return func(*args,**kw)
        --- <exception caught here> ---
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/internet/epollreactor.py", line 220, in _doReadOrWrite
            why = selectable.doWrite()
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/internet/tcp.py", line 664, in doConnect
            self._connectDone()
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/internet/ssl.py", line 160, in _connectDone
            self.startTLS(self.ctxFactory)
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/internet/tcp.py", line 561, in startTLS
            if Connection.startTLS(self, ctx, client):
File "/usr/share/opscenter/lib/py-debian/2.7/amd64/twisted/internet/tcp.py", line 402, in startTLS
            self.socket = SSL.Connection(ctx.getContext(), self.socket)
File "/usr/lib/python2.7/dist-packages/opscenterd/SslUtils.py", line 54, in getContext

File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 303, in load_verify_locations
            raise TypeError("cafile must be None or a byte string")
        exceptions.TypeError: cafile must be None or a byte string

2015-05-26 10:34:27+0000 [] INFO: <twisted.internet.ssl.Connector instance at 0x7fa490ff9a70> will retry in 2 seconds
2015-05-26 10:34:27+0000 []  INFO: Unhandled error in Deferred:
2015-05-26 10:34:27+0000 [] Unhandled Error
        Traceback (most recent call last):
Failure: twisted.internet.error.ConnectError: An error occurred while connecting: [Failure instance: Traceback (failure with no frames): <type 'exceptions.TypeError'>: cafile must be None or a byte string
        ].

Any hints about this?

Thanks in advance,
Jan

Reply via email to