Datastax Opscenter 5.1.1 无法在客户端到节点加密后连接到集群
Datastax Opscenter 5.1.1 cant connect to cluster after client-to-node encryption
我正在尝试在 cassandra 上设置节点间和客户端加密。我设置
建立一个小型 CA,生成证书,分发它们并进行配置
使用它们的节点。
节点间加密在我添加“--ssl”后直接工作,cqlsh。
但我无法设置 OpsCenter (运行 5.1.1)。两个问题:
- 我添加了 ca 文件路径,对我来说 /etc/opscenter/cassandra_ca.pem,如
问。在添加密钥库之前我无法保存集群,即使我没有设置
客户验证的标记 - 我也找不到任何文档
keystore 是指这里。由于 OpsCenter 是 python,所以这些显然不是
来自 cassandra 的 jks 密钥库。
我猜是这样的意思,各个节点都存在
opscenter 的证书,它将根据 ca-store 验证它。
- 尝试连接时出现错误 opscenterd.log:
2015-05-26 10:20:49+0000 [] INFO: Using SSL when checking thrift connection: /etc/cassandra/cassandra_ca.crt, client_pem=None, client_key=None, validate=True
2015-05-26 10:20:49+0000 [] INFO: Starting factory <opscenterd.ThriftService.NoReconnectCassandraClientFactory instance at 0x7fa4868c03b0>
2015-05-26 10:20:49+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:20:49+0000 [] INFO: <twisted.internet.ssl.Connector instance at 0x7fa4868c05f0> will retry in 2 seconds
2015-05-26 10:20:49+0000 [] INFO: Unhandled error in Deferred:
2015-05-26 10:20:49+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
]. ].
有什么提示吗?
提前致谢,
一月
Opscenter 需要一些设置才能使用客户端到节点加密
- Opscenter 守护程序需要证书才能访问群集(就像任何其他客户端一样)。这应该由与 DSE 端记录的相同过程产生。如果 Cassandra 使用 JKS 密钥进行加密,则需要 JKS 密钥。
- Opscenterd 证书需要在 cassandra.yaml 中指定的信任库中注册。
- 代理需要知道 Cassandra 配置为接受的密钥库的路径。最简单的方法是将它们指向 cassandra.yaml.
中指定的密钥库
将集群添加到 opscenter 时,它会询问证书的位置(对于 opscenterd)和密钥库的位置(对于每个 cassandra 节点)。
我正在尝试在 cassandra 上设置节点间和客户端加密。我设置 建立一个小型 CA,生成证书,分发它们并进行配置 使用它们的节点。
节点间加密在我添加“--ssl”后直接工作,cqlsh。
但我无法设置 OpsCenter (运行 5.1.1)。两个问题:
- 我添加了 ca 文件路径,对我来说 /etc/opscenter/cassandra_ca.pem,如 问。在添加密钥库之前我无法保存集群,即使我没有设置 客户验证的标记 - 我也找不到任何文档 keystore 是指这里。由于 OpsCenter 是 python,所以这些显然不是 来自 cassandra 的 jks 密钥库。
我猜是这样的意思,各个节点都存在 opscenter 的证书,它将根据 ca-store 验证它。
- 尝试连接时出现错误 opscenterd.log:
2015-05-26 10:20:49+0000 [] INFO: Using SSL when checking thrift connection: /etc/cassandra/cassandra_ca.crt, client_pem=None, client_key=None, validate=True 2015-05-26 10:20:49+0000 [] INFO: Starting factory <opscenterd.ThriftService.NoReconnectCassandraClientFactory instance at 0x7fa4868c03b0> 2015-05-26 10:20:49+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:20:49+0000 [] INFO: <twisted.internet.ssl.Connector instance at 0x7fa4868c05f0> will retry in 2 seconds 2015-05-26 10:20:49+0000 [] INFO: Unhandled error in Deferred: 2015-05-26 10:20:49+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 ]. ].
有什么提示吗?
提前致谢, 一月
Opscenter 需要一些设置才能使用客户端到节点加密
- Opscenter 守护程序需要证书才能访问群集(就像任何其他客户端一样)。这应该由与 DSE 端记录的相同过程产生。如果 Cassandra 使用 JKS 密钥进行加密,则需要 JKS 密钥。
- Opscenterd 证书需要在 cassandra.yaml 中指定的信任库中注册。
- 代理需要知道 Cassandra 配置为接受的密钥库的路径。最简单的方法是将它们指向 cassandra.yaml. 中指定的密钥库
将集群添加到 opscenter 时,它会询问证书的位置(对于 opscenterd)和密钥库的位置(对于每个 cassandra 节点)。