集群开启TLS后TiSpark该怎么配置?

【 TiDB 使用环境】测试
【 TiDB 版本】V6.5
请问各位大佬有没有开启过集群TLS并使用TiSpark的?
开启TLS后TiSpark该怎么配置呢?

https://docs.pingcap.com/zh/tidb/stable/tispark-overview#tls-配置

看看能否解决。

1 个赞

就是不知道这里的文件怎么配置
开启TLS后也没这些文件。

这个是tidb组件之间的证书。

https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-components#证书重新加载

是这个文档上的内容,我不清楚你是否开了这个TLS,如果tidb组件之间没有开TLS,我觉得可以不用配置。

1 个赞

组件之间开了的
tiup cluster tls xxx enable
就是由于组件开了TLS,spark要连PD,不知道配置怎么写,看这个文档 https://docs.pingcap.com/zh/tidb/stable/tispark-overview#tls-配置没看明白。

按顺序来,tidb有2种TLS.
1种是tidb组件之间的TLS
https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-components#为-tidb-组件间通信开启加密传输
第2种是TiDB 服务端与客户端之间的TLS
https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-clients-and-servers#为-tidb-客户端服务端间通信开启加密传输

然后,tispark配置里面

spark.tispark.tikv

开头的都是指tidb组件之间的TLS配置也就是第一种。

spark.tispark.jdbc

上面这个开头的指的是tidb服务端和客户端之间的TLS,也就是第二种。

1 个赞

连pd应该使用tidb组件之间的TLS证书,使用

spark.tispark.tikv

开头的配置项来配置。

1 个赞

那就是使用这几个对吧


这些证书是要自己重新生成吗?
image

如果是TLS已经开了的情况下,这些证书应该是已经生成好的。
只不过要找找位置在哪里。

在tidb的配置文件中 security下

https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#ssl-ca

能同时找到2种TLS证书的位置。当然这2种证书有可能配置的是一样的。

1 个赞

看tidb配置是有是这几个文件,我用这个配一下TiSpark试试看

1 个赞

试了各种组合都不对

都是报这个
ERROR ChannelFactory: Failed to create ssl context builder
File does not contain valid private key

翻了下感觉是cluster-ssl-key这个参数对应的文件有什么问题。
应该是你上面这个图里面的tidb.pem。

上面这个链接你可以参考一下。里面大致说到两个方向排查

1是可以通过

openssl rsa -in [tidb.pem] -check

看看这个文件到底是不是一个openssl认为的有效的key。

2,java对证书格式有些要求,不清楚当时是怎么生成的。可能是证书格式的问题。

OpenSSL changed the default PKCS#5, v1.5 format to PKCS#5, v2 in OpenSSL 1.1.0. The JDK has a long outstanding issue with PKCS#5, v2. In short, PKCS#5, v2 does not work.

1 个赞

应该是.pem这个文件格式的问题,openssl rsa -in [tidb.pem] -check没有异常,就是个正常的rsa私钥。

1 个赞

tispark 只支持 pkcs8 的 key,而 tiup 生成的是 pkcs1 的 key,转换一下就可以用了。

1 个赞

感谢帮忙分析

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。