我有一个启用了客户端节点加密的Cassandra集群。我试图将此群集添加到OpsCenter 5.1.0实例,但是它无法连接到该群集。日志文件似乎抱怨无法验证SSL证书:`信息:在0x7f2ce05c8638处启动工厂opscenterd.ThriftService.NoReconnectCassandraClientFactory实例>2015-06-10 15:09:46 + 0000 []警告:无法验证ssl证书。2015-06-10 15:09:46 + 0000 []未处理的错误        追溯(最近一次通话):          在callWithLogger中的第84行,文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/python/log.py”            返回callWithContext({“ system”:lp},func,* args,** kw)          在callWithContext中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/python/log.py”第69行            返回context.call({ILogContext:newCtx},func,* args,** kw)          在callWithContext中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/python/context.py”,第59行            返回self.currentContext()。callWithContext(ctx,func,* args,** kw)          在callWithContext中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/python/context.py”,第37行            返回func(* args,** kw)        ---这里抓到的异常---          _doReadOrWrite中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/internet/epollreactor.py”,行217            为什么= selectable.doRead()          在doRead中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/internet/tcp.py”,第137行            返回Connection.doRead()          doRead中的文件“ /opt/opscenter-5.1.0/lib/py-debian/2.7/amd64/twisted/internet/tcp.py”,第452行            数据= self.socket.recv(self.bufferSize)          ssl_simple_verifyCB中的第12行的文件“ build / lib / python2.7 / site-packages / opscenterd / SslUtils.py” opscenterd.Utils.SSLVerifyException: SSL certificate invalid我的问题是:能够将客户端节点加密群集添加到opscenter的分步说明是什么?确切需要哪些.pem和.keystore文件,如何保存它们?关于该主题的DataStax文档不够详细,因此并没有真正的帮助。我认为有些人一定已经成功地完成了此设置,并且我相信许多人会赞赏详细的解释/说明。 最佳答案 这里要注意的一件事是,尽管文档中确实提到了每个节点生成一个密钥,但实际上这并不是非常可扩展的。在大多数系统中,通常使用所需的密钥和证书来创建一个密钥库,然后根据需要在群集中的所有节点和客户端应用程序中使用该密钥库。您可以从此密钥库中导出证书,并将其用于OpsCenter。与其他客户端一样,OpsCenter是SSL客户端(就SSL而言)。因此,您必须从Java密钥库中导出密钥,将其转换为.pem格式,并将其用于opscenterd流程。代理基于Java,因此它们可以使用Java密钥库。 DS文档在那里,但是有点零散,所以它是在正确的位置查找的问题:-)我将在此处使用OpsCenter最新文档作为参考。我假设您仅在OpsCenter和Cassandra之间以及OpsCenter代理和Cassandra之间使用SSL准备服务器证书:https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureSSLCertificates_t.html配置客户端到节点SSL:https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureSSLClientToNode_t.html使用带有SSL的cqlsh(可选):https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureCqlshSSL_t.html要将密钥转换为pem格式,请参见此处的步骤7:https://docs.datastax.com/en/latest-opsc/opsc/online_help/opscAddingCluster_t.html例子请注意,所有这些示例均采用1路SSL。您在名为/etc/dse/keystore的文件中生成了密钥,并在名为/etc/dse/truststore的文件中生成了证书。老实说,我从来没有真正有幸直接在OpsCenter UI中添加启用SSL的群集。我总是发现手动创建cluster.conf文件和代理address.yaml文件更加快捷,容易。请注意,像truststore,key.pem等这样的SSL文件必须位于所有需要它们的本地计算机上。代理/var/lib/datastax-agent/conf/address.yaml文件示例(请注意,use_ssl用于opscenter 代理SSL,在此我们不使用它)stomp_interface: 192.168.56.29use_ssl: 0# ssl_keystore settings if using sslssl_keystore: /etc/dse/truststoressl_keystore_password: datastax示例opscenter /etc/opscenter/clusters/<cluster_name>.conf文件[jmx]username =password =port = 7199[kerberos_client_principals][kerberos][agents]ssl_keystore = /etc/dse/truststoressl_keystore_password = datastax[kerberos_hostnames][kerberos_services][cassandra]ssl_ca_certs = /etc/dse/key.pemssl_validate = Falseseed_hosts = 192.168.56.22其他提示等我总是会发现我是否在DSE / Cassandra中对SSL连接进行故障排除。我将剥离所有SSL并首先使群集正常工作,然后一次配置一个步骤,例如打开节点到节点SSL,然后打开客户端到节点,然后打开OpsCenter,依此类推。调试所有的SSL错误不是为了胆小!链接您可能会发现有用的其他文档链接:https://docs.datastax.com/en/opscenter/5.2/opsc/configure/opscConnectionConfig_r.htmlhttps://docs.datastax.com/en/opscenter/5.2/opsc/configure/agentAddressConfiguration.html关于ssl - 想要的:有关将启用客户端节点加密的Cassandra集群添加到DataStax OpsCenter 5.1.0的说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30763372/
10-09 17:43