【问题标题】:DataStax DSE Cassandra SSL - Unrecognized SSL message, plaintext connection?DataStax DSE Cassandra SSL - 无法识别的 SSL 消息,明文连接?
【发布时间】:2015-03-23 23:09:54
【问题描述】:

我一直在尝试在运行 Datastax (DSE) 4.6 版和 Cassandra 2.0.11 的单节点集群中启用客户端到节点 ssl 通信

按照datastax文档documentation中的步骤操作后

我不断收到以下错误消息;

INFO [Thread-3] 2015-01-25 09:00:21,383 ThriftServer.java(第 135 行)正在侦听 thrift 客户端... 错误 [Thrift:1] 2015-01-25 09:00:30,486 TNegotiatingServerTransport.java(第 523 行)无法打开服务器传输。 org.apache.thrift.transport.TTransportException:javax.net.ssl.SSLException:无法识别的 SSL 消息,明文连接? 在 org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 在 com.datastax.bdp.transport.server.TPreviewableTransport.readUntilEof(TPreviewableTransport.java:79) 在 com.datastax.bdp.transport.server.TPreviewableTransport.preview(TPreviewableTransport.java:55) 在 com.datastax.bdp.transport.server.TNegotiatingServerTransport.open(TNegotiatingServerTransport.java:186) 在 com.datastax.bdp.transport.server.TNegotiatingServerTransport$Factory.getTransport(TNegotiatingServerTransport.java:516) 在 com.datastax.bdp.transport.server.TNegotiatingServerTransport$Factory.getTransport(TNegotiatingServerTransport.java:405) 在 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:196) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 原因:javax.net.ssl.SSLException:无法识别的 SSL 消息,明文连接? 在 sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:671) 在 sun.security.ssl.InputRecord.read(InputRecord.java:504) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 在 sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) 在 sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 在 java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 在 java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 在 java.io.BufferedInputStream.read(BufferedInputStream.java:334) 在 org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127) ... 9 更多 错误 [Thrift:1] 2015-01-25 09:00:30,513 CustomTThreadPoolServer.java(第 222 行)处理消息期间发生错误。 java.lang.RuntimeException:无法打开服务器传输:未知 在 com.datastax.bdp.transport.server.TNegotiatingServerTransport$Factory.getTransport(TNegotiatingServerTransport.java:524) 在 com.datastax.bdp.transport.server.TNegotiatingServerTransport$Factory.getTransport(TNegotiatingServerTransport.java:405) 在 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:196) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)

这是我的 cassandra.yaml 文件

client_encryption_options:

启用:真

密钥库:/home/ubuntu/.keystore

keystore_password:****

信任库:/home/ubuntu/.truststore

信任库密码:****

协议:ssl

store_type: JKS

cipher_suites:

[TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA]

创建密钥库和信任库的步骤

keytool -genkey -keyalg RSA -alias node0 -keystore .keystore(使用主机名作为名字和姓氏)

keytool -export -alias node0 -file node0.cer -keystore .keystore

keytool -import -v -trustcacerts -alias node0 -file node0.cer -keystore .truststore

我已经通过从 oracle 网站http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 下载所需的 jar 文件来修复他们在文档中存在的 TLS_RSA_WITH_AES_256_CBC_SHA 错误

【问题讨论】:

    标签: ssl cassandra datastax plaintext


    【解决方案1】:

    此消息表明客户端正在尝试打开未加密的连接。

    首先要检查是否启用了客户端证书身份验证。阅读:http://www.datastax.com/documentation/datastax_enterprise/4.6/datastax_enterprise/sec/secRunCqlsh.html

    这是启用 cqlsh ssl 连接的演练:https://github.com/PatrickCallaghan/datastax-ssl-example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 2011-09-25
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多