searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

trino https配置与连接详解

2023-06-28 04:25:57
559
0

1.概述

trino默认的jdbc,cli及web ui等客户端均封装的是http协议,且无法使用密码,即非安全链接,如下图所示:

如果这个时候传输密码到服务端,会抛出Authentication over HTTP is not enabled 异常,当然也可以修改源码支持http+密码的方式访问trino,但是稍微复杂一些,服务端和客户端都需要改造,如果是外接的系统比如BI就比较麻烦。在不修改源码的情况下,如果想要使用用户名+密码的方式访问trino, 那就必须启用https。

非安全链接配置比较简单可参考trino官网,下面我们探讨一下trino https链接

2.https 链接

trino支持三种方式的https链接,分别是:通过代理服务https访问trino,  基于私有证书的https,基于通用证书的https

2.1通过代理服务https访问trino

这是官方最推荐的方式,只需要在coordinator config.properties加如下配置:

http-server.process-forwarded=true

然后即可通过前端的负载均衡或者代理服务访问后端的trino coordinator, 这个时候trino coordinator不需要配置https,还是默认的http配置,只需要前端的代理https是基于通用证书即可,客户端访问代理的https接口将信息转发到后端的trino server,如下图所示:

2.2 基于私有证书的https

一般生产环境也会使用这种方式,需要自己生成证书

1.生成证书:

keytool -genkeypair -validity 36500 -ext SAN=IP:${trino_server_ip} -alias trino -keypass ${password} -storepass ${password} -keyalg RSA -dname CN=${trino_server_ip},OU=,O=,L=,ST=,C= -keystore trino.jks
 
keytool -export -rfc -keystore trino.jks --alias trino -file trino.pem
 
2.trino服务端配置:
 
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=etc/trino.jks
http-server.https.keystore.key=${password}
http-server.authentication.type=password
 
默认开启https后,还需要配置trino集群内部的安全通信密钥,所以我重新优化了这个功能,这样集群内部节点之间使用http方式通信即可,无需配置密钥。
 
 
3.生成密码文件(也可使用LDAP)
touch password.db
htpasswd -B -C 10 password.db trino
然后输入密码即可
 
4.客户端配置,以cli为例
trino-cli-406-executable.jar --server https://{trino_coordinator_ip}:8443  --catalog hive --truststore-path trino.pem --user trino --password
 
需要在客户端指定证书位置,同理jdbc方式也需要指定证书
 
这种方式的弊端就是如果客户端是第三方工具就很麻烦,一般需要对第三方工具进行改造从而才能读到我们提供的证书。
 
 

2.3 基于通用证书的https

需要申请通用证书,trino使用通用证书的配置方法和2.2一样,但是通用证书一般有时间期限,超时需要重新申请,通用证书支持所有形式的客户端和浏览器的https连接,无需对客户端做额外配置,也是官方比较推荐的。

申请链接:

https://letsencrypt.org/

https://www.sslforfree.com/

 

 

 

0条评论
0 / 1000
yx_knight
5文章数
0粉丝数
yx_knight
5 文章 | 0 粉丝
原创

trino https配置与连接详解

2023-06-28 04:25:57
559
0

1.概述

trino默认的jdbc,cli及web ui等客户端均封装的是http协议,且无法使用密码,即非安全链接,如下图所示:

如果这个时候传输密码到服务端,会抛出Authentication over HTTP is not enabled 异常,当然也可以修改源码支持http+密码的方式访问trino,但是稍微复杂一些,服务端和客户端都需要改造,如果是外接的系统比如BI就比较麻烦。在不修改源码的情况下,如果想要使用用户名+密码的方式访问trino, 那就必须启用https。

非安全链接配置比较简单可参考trino官网,下面我们探讨一下trino https链接

2.https 链接

trino支持三种方式的https链接,分别是:通过代理服务https访问trino,  基于私有证书的https,基于通用证书的https

2.1通过代理服务https访问trino

这是官方最推荐的方式,只需要在coordinator config.properties加如下配置:

http-server.process-forwarded=true

然后即可通过前端的负载均衡或者代理服务访问后端的trino coordinator, 这个时候trino coordinator不需要配置https,还是默认的http配置,只需要前端的代理https是基于通用证书即可,客户端访问代理的https接口将信息转发到后端的trino server,如下图所示:

2.2 基于私有证书的https

一般生产环境也会使用这种方式,需要自己生成证书

1.生成证书:

keytool -genkeypair -validity 36500 -ext SAN=IP:${trino_server_ip} -alias trino -keypass ${password} -storepass ${password} -keyalg RSA -dname CN=${trino_server_ip},OU=,O=,L=,ST=,C= -keystore trino.jks
 
keytool -export -rfc -keystore trino.jks --alias trino -file trino.pem
 
2.trino服务端配置:
 
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=etc/trino.jks
http-server.https.keystore.key=${password}
http-server.authentication.type=password
 
默认开启https后,还需要配置trino集群内部的安全通信密钥,所以我重新优化了这个功能,这样集群内部节点之间使用http方式通信即可,无需配置密钥。
 
 
3.生成密码文件(也可使用LDAP)
touch password.db
htpasswd -B -C 10 password.db trino
然后输入密码即可
 
4.客户端配置,以cli为例
trino-cli-406-executable.jar --server https://{trino_coordinator_ip}:8443  --catalog hive --truststore-path trino.pem --user trino --password
 
需要在客户端指定证书位置,同理jdbc方式也需要指定证书
 
这种方式的弊端就是如果客户端是第三方工具就很麻烦,一般需要对第三方工具进行改造从而才能读到我们提供的证书。
 
 

2.3 基于通用证书的https

需要申请通用证书,trino使用通用证书的配置方法和2.2一样,但是通用证书一般有时间期限,超时需要重新申请,通用证书支持所有形式的客户端和浏览器的https连接,无需对客户端做额外配置,也是官方比较推荐的。

申请链接:

https://letsencrypt.org/

https://www.sslforfree.com/

 

 

 

文章来自个人专栏
trino/presto
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0