trino 433 开启 HTTPS

什么要开启https

因为开始password验证要求必须得https。

摘要

trino节点之间可以不用开启SSL,对外访问开启SSL。如果自备证书可以直接配置到trino的config文件,如果没有证书可以使用mkcert生成自签证书(客户端需要信任证书,尤其是java keystore),之前尝试过openssl,keystore,keystore explorer,都不是特别好用,不是生成失败,就是生成的证书需要配合域名使用(需要客户端修改hosts文件,新增域名和IP的解析),所以选择了mkcert,只需要一行命令就可以(可以给多个IP or domain生成证书)。

准备

  1. mkcert : mkcert地址。根剧系统选择合适的mkcert下载

生成证书

shell 复制代码
# 如果是linux系统,需要chmod a+x mkcert  赋予执行权限
mkcert domain1 [domain2 [...]] 
# 假设需要多个IP使用
mkcert 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4
# 假设需要多个IP or domain使用
mkcert 192.168.1.1 192.168.1.2 trino3.xyz trino4.xyz
# 假设需要多个IP or domain使用,trino1.xyz解析到192.168.1.1,trino2.xyz解析到192.168.1.2
mkcert 192.168.1.1 192.168.1.2 trino1.xyz trino2.xyz trino3.xyz trino4.xyz
# 最后效果是无论使用IP 还是 domain 都能够正常访问
# domain 需要配置 DNS ,DNS 能够解析 domain 指向IP。(或者修改hosts文件)

#查看信任证书存放地址
./mkcert -CAROOT
# 会生成两个.pem文件,一个是证书,一个秘钥:
# * 可以随便定义。
# *.pem后缀的是证书文件,建议改名为*.cer(改完在windows可以直接双击安装,选择信任机构)
# *key.pem后缀的是秘钥文件。建议改名成*.key

# 合并秘钥和证书文件,此处假定 * 为trino。
cat trino.key trino.cer > trino.pem

trino 配置证书文件

修改 config.properties 文件 增加以下内容

shell 复制代码
# 启用https
http-server.https.enabled=true
# 设置https端口
http-server.https.port=8443
# 设置证书秘钥文件地址(建议三个文件 key,cer,pem 文件放到trino下的tls目录,没有就创建)
# 建议写绝对路径
http-server.https.keystore.path=/trino-server-433/tls/trino.pem
#节点之间不需要使用https通信,在内网部署无需,外网需打开,默认就是false
internal-communication.https.required=false

全部节点都必须要有证书文件,config.properties 可主节点修改,也可全部节点修改。

trino 全部节点重启

shell 复制代码
# 重启, -v 查看启动信息
bin/launcher restart -v
# 重启完成之后使用 https 访问即可。

信任证书

shell 复制代码
# 本地信任证书
mkcert --install
# java 信任证书
# -file 证书地址
keytool -import -alias trino -file /tmp/trino.cer \
-keystore $JAVA_HOME/jre/lib/security/cacerts --storepass changeit -v
# 如果只安装了jre的话
keytool -import -alias trino -file /tmp/trino.cer \
-keystore $JAVA_HOME/lib/security/cacerts --storepass changeit -v
# 查看已信任的证书
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts --storepass changeit -v
keytool -list -keystore $JAVA_HOME/lib/security/cacerts --storepass changeit -v

DataGrip

下载key(秘钥文件),和cer(证书文件)文件配置到此处即可。

Troubleshoot

错误1

连接trino时报错

复制代码
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target
解决方案:

检查java是否信任自签证书,确保运行java使用的$JAVA_HOME/lib/security/cacerts中是否有新增加的证书

错误2

连接的时候报错。这是因为证书的里面的SAN设置的有问题。

shell 复制代码
 javax.net.ssl.SSLPeerUnverifiedException: hostname not verified
解决方案:
  1. 修改hosts文件,新增一个域名到IP的映射
  2. 使用mkcert。mkcert亲测不会出现问题。
错误3

这是因为 mysql 低版本 不支持设置时区为 Asia/Shanghai

shell 复制代码
java.sql.SQLNonTransientConnectionException: 
Could not create connection to database server. Attempted reconnect 3 times. Giving up.
com.mysql.cj.exceptions.CJException: Unknown or incorrect time zone: 'Asia/Shanghai'
sql 复制代码
# 使用以下代码验证mysql数据库是否支持设置这种时区
SET SESSION time_zone='Asia/Shanghai'
解决方案

建议百度 mysql Unknown or incorrect time zone: 'Asia/Shanghai'查找解决方案。

相关推荐
TG:@yunlaoda360 云老大几秒前
华为云国际站代理商的运维保障具体要求中,服务响应与SLA硬指标的具体内容是什么?
大数据·运维·华为云
minhuan7 分钟前
大模型应用:不减性能只减负担:大模型稀疏化技术全景与实践.36
大数据·人工智能·算法
武子康22 分钟前
Java-216 RocketMQ 4.5.1 在 JDK9+ 从0到1全流程启动踩坑全解:脚本兼容修复(GC 参数/CLASSPATH/ext.dirs)
java·大数据·分布式·消息队列·系统架构·rocketmq·java-rocketmq
DX_水位流量监测35 分钟前
地埋式积水监测仪:城市防涝的智能感知核心
大数据·网络·人工智能·数据分析·自动化
武子康37 分钟前
大数据-196 scikit-learn KNN 实战:KNeighborsClassifier、kneighbors 与学习曲线选最优 案例1红酒 案例2乳腺
大数据·后端·机器学习
TM1Club38 分钟前
Zoey的TM1聊天室|#3 合并报表提速:业财一体如何实现关联方对账自动化
大数据·开发语言·人工智能·经验分享·数据分析·自动化·数据库系统
禾高网络39 分钟前
互联网医院系统|禾高互联网医院|互联网医院成品
java·大数据·人工智能
Macbethad43 分钟前
技术报告:云原生与Kubernetes实践深度解析
大数据
小北方城市网1 小时前
第 10 课:Node.js 后端企业级进阶 —— 任务管理系统后端优化与功能增强(续)
大数据·前端·vue.js·ai·性能优化·node.js
达之云*驭影1 小时前
达之云驭影:深耕本地生活服务,以数字化赋能千行百业
大数据