trino开启https

振鹭1年前技术文章555
一、生成https证书
(所用到的openssl和keytool命令都是linux自带的)
配置https证书:
(1)创建目录
[hdfs@hadoop01 hadoop]# mkdir -p /data/ssl/
[hdfs@hadoop01 hadoop]# cd /data/ssl/
(2)执行创建指令
openssl req -new -x509 -keyout bd_ca_key -out bd_ca_cert -days 9999 -subj '/C=CN/ST=beijing/L=beijing/O=test/OU=test/CN=test'
[hdfs@hadoop01 kerberos_https]# openssl req -new -x509 -keyout bd_ca_key -out bd_ca_cert -days 9999 -subj '/C=CN/ST=beijing/L=beijing/O=test/OU=test/CN=test'
Generating a 2048 bit RSA private key
.....................................................................................................+++
.+++
writing new private key to 'bd_ca_key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
[hdfs@hadoop01 kerberos_https]#
[hdfs@hadoop01 kerberos_https]#
# (输入密码和确认密码是123456,此命令成功后输出bd_ca_key和bd_ca_cert两个文件)
[hdfs@hadoop01 kerberos_https]# ll
总用量 8
-rw-r--r-- 1 root root 1294 3月  27 19:36 bd_ca_cert
-rw-r--r-- 1 root root 1834 3月  27 19:36 bd_ca_key
(3)将得到的两个文件复制到其他机器上面
scp -r /opt/security/kerberos_https root@hadoop02 : /opt/security/
(4)在所有节点上都依次执行以下命令:
cd /opt/security/kerberos_https
 # 所有需要输入密码的地方全部输入123456(方便起见,如果你对密码有要求请自行修改)
# 1  输入密码和确认密码:123456,此命令成功后输出keystore文件
keytool -keystore keystore -alias localhost -validity 9999 -genkey -keyalg RSA -keysize 2048 -dname "CN=test, OU=test, O=test, L=beijing, ST=beijing, C=CN"
   
# 2 输入密码和确认密码:123456,提示是否信任证书:输入yes,此命令成功后输出truststore文件
keytool -keystore truststore -alias CARoot -import -file bd_ca_cert
   
# 3 输入密码和确认密码:123456,此命令成功后输出cert文件
keytool -certreq -alias localhost -keystore keystore -file cert
   
# 4 此命令成功后输出cert_signed文件
openssl x509 -req -CA bd_ca_cert -CAkey bd_ca_key -in cert -out cert_signed -days 9999 -CAcreateserial -passin pass:123456
   
# 5 输入密码和确认密码:123456,是否信任证书,输入yes,此命令成功后更新keystore文件
keytool -keystore keystore -alias CARoot -import -file bd_ca_cert
   
# 6 输入密码和确认密码:123456
keytool -keystore keystore -alias localhost -import -file cert_signed
最终得到:
-rw-r--r-- 1 root root 1294 3月  27 19:36 bd_ca_cert
-rw-r--r-- 1 root root   17 3月  27 19:43 bd_ca_cert.srl
-rw-r--r-- 1 root root 1834 3月  27 19:36 bd_ca_key
-rw-r--r-- 1 root root 1081 3月  27 19:43 cert
-rw-r--r-- 1 root root 1176 3月  27 19:43 cert_signed
-rw-r--r-- 1 root root 4055 3月  27 19:43 keystore
-rw-r--r-- 1 root root  978 3月  27 19:42 truststore
(5)但是由于可能某些场景下需要将证书的文件类型改成jks类型
keystore --> keystore.jks
keytool -importkeystore -srckeystore ./keystore -destkeystore .
truststore --> truststore.jks
cp ./truststore ./truststore.jks
(这是由于上述生成的truststore证书已经是jks格式了)
那么,如何查看生成证书的文件格式呢:
[root@devops-hadoop3-krb-node2 hdfs_ca]# keytool -list -v -keystore ./keystore
输入密钥库口令:  

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 2 个条目

别名: caroot
创建日期: 2023-10-7
条目类型: trustedCertEntry

所有者: CN=devops-hadoop3-krb-node1, OU=dtstack, O=dtstack, L=hangzhou, ST=zhejiang, C=CN
发布者: CN=devops-hadoop3-krb-node1, OU=dtstack, O=dtstack, L=hangzhou, ST=zhejiang, C=CN
序列号: f9ed82c1408b00c7
有效期开始日期: Sat Oct 07 15:52:51 CST 2023, 截止日期: Tue Feb 21 15:52:51 CST 2051
证书指纹:
         MD5: 15:D6:D6:37:13:8E:22:0D:15:C9:C1:A2:6A:F3:EC:B5
         SHA1: 80:23:0B:D9:4C:99:D1:10:2A:60:59:C4:9A:F9:A3:9E:B8:04:AC:87
         SHA256: 44:AD:10:20:D0:34:32:62:F9:3C:9C:DF:C4:EA:58:C8:08:BB:50:DD:5A:D8:0F:18:AD:D4:A0:3E:CA:D0:3C:38
         签名算法名称: SHA256withRSA
         版本: 3


上述生成的https证书存在安全问题,在使用其他客户端使用jdbc来连接trino时,会报错证书的安全问题导致无法连接,因此,可以采用以下的证书生成方式:


1. 生成自签名证书和私钥
其中 Common Name 填写主机名:如主机名为 ditto-1,则此处填写 ditto-1,主机名为 ditto-2,则此处填写 ditto-2
kyotom@ditto-2:~/key$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
.+.....+.+.........+..+...+....+..+......+.......+...+.....+..........+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+......+...+..+...+.+..+....+......+...+......+...............+.........+..+...+......+...+.......+...........+.......+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+...+...+.....+......+.+..+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
......+...........+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+..+...+....+..+.+..+...+....+..........................+.............+......+.....+....+.........+..+.+..+.............+....................+....+.....+....+......+.........+..+.............+......+........+.+............+...............+...+.........+..+....+......+...+......+....................+.........+............+.+.....+...+..................................+..+...+.+..+....+...........+....+........+..........+.................+.+.......................+.+...+......+.....+....+..+...............+..................+..........+..........................+......+.+..............+......+.......+.....+.+.................+.......+...+...+......+......+..+............+.+...+.....+.+.................................+.....+............+..................+...+.......+..................+..+......+.+........+..........+...........+..........+.....................+...........+....+.....+...+..................+...................+......+.....+...+.........+................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:ZJ
Locality Name (eg, city) []:HZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:dtstack
Organizational Unit Name (eg, section) []:engine
Common Name (e.g. server FQDN or YOUR name) []:ditto-1/ditto-2
Email Address []:zhenlu@dtstack.com
2. 将证书和私钥转换为PKCS12格式
-name 参数填写主机名:如主机名为 ditto-1,则此处填写 ditto-1,主机名为 ditto-2,则此处填写 ditto-2。
此时输入两次密码,为简单起见,密码保持相同,此处均使用 abc123。
kyotom@ditto-2:~/key$ openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx -name "ditto-1"/"ditto-2"
Enter Export Password:
Verifying - Enter Export Password:
3. 将证书添加到Trino服务器的密钥库(keystore)中
-alias 参数填写主机名:如主机名为 ditto-1,则此处填写 ditto-1,主机名为 ditto-2,则此处填写 ditto-2。
此时先连续两次要输入生成的 keystore 的密码,此处为了简单我们依旧使用 abc123 作为密码。
然后要输入第二步中的 cert.pfx 证书密码,第 2 步我们使用了 abc123,此处也填写  abc123。
kyotom@ditto-1:~/key$ keytool -importkeystore -srckeystore cert.pfx -destkeystore keystore.jks -srcstoretype PKCS12 -deststoretype JKS -alias "ditto-1"/"ditto-2"
Importing keystore cert.pfx to keystore.jks...
Enter destination keystore password:  
Re-enter new password: 
Enter source keystore password:
4. 生成客户端 truststore 并将 keystore 的证书信息添加到 truststore 中
-srcalias 填写 keystore 的别名,上面我们都是用主机名作为别名,因此这里也是相对应的主机名:如主机名为 ditto-1,则此处填写 ditto-1,主机名为 ditto-2,则此处填写 ditto-2。
-destalias 填写与 srcalias 一致即可。
truststore 的密码为了简单我们依旧使用 abc123 作为密码。
kyotom@ditto-1:~/key$ keytool -importkeystore -srckeystore keystore.jks -destkeystore truststore.jks -srcalias ditto-1/ditto-2 -destalias ditto-1/ditto-2 -srcstoretype JKS -deststoretype JKS
Importing keystore keystore.jks to truststore.jks...
Enter destination keystore password:  
Re-enter new password: 
Enter source keystore password:  

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.jks -deststoretype pkcs12".
二、配置trino开启https
(1)在trino的coon节点config_coordinator.properties配置文件里增加配置:
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/data/kerberos/hdfs_ca/keystore
http-server.https.keystore.key=abc123
http-server.authentication.allow-insecure-over-http=false
#http-server.https.keymanager.password=abc123
#http-server.https.truststore.path=/data/kerberos/hdfs_ca/truststore
#http-server.https.truststore.key=abc123
internal-communication.shared-secret=abc123
http-server.authentication.type=PASSWORD
#为Trino coordinator 启用密码认证类型。必须设置为PASSWORD。
(2)在trino的worker节点config_worker.properties里增加配置:
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/data/kerberos/hdfs_ca/keystore
http-server.https.keystore.key=abc123
http-server.authentication.allow-insecure-over-http=false
internal-communication.shared-secret=abc123
这样就OK了,然后再重启trino,就可以使用https来访问web页面了(注意这时候访问页面的端口已经不是8081了,变成了上面配置的8443)
这样进到web页面时,需要输入账号密码才能进去

image.png


相关文章

REPMGR-PG高可用搭建(一)

REPMGR-PG高可用搭建(一)

PG高可用对比数据库复制的术语和定义这些术语和定义应该有助于讨论复制。在与其他Postgres开发人员进行了大量讨论之后,我编译了它们,但是这些定义应该是普遍可用的,并且也应该适用于其他RDBMS。复...

Ansible自动化运维平台部署

一、部署前准备部署机器准备计算机名解析关闭防火墙、selinux时间同步软件包获得ssh免密登陆约定事项:所有服务器全部采用静态ip主机名称IP地址manage01192.168.98.200/24n...

Ranger-hdfs插件部署

Ranger-hdfs插件部署

部署在两个namenode节点解压插件cd /opt/hadooptar -xzvf ranger-2.4.0-hdfs-plugin.tar.gz -C /opt/cd /opt/ranger-2....

数据湖技术之iceberg(四)iceberg的数据类型

1  Iceberg数据类型类型描述笔记boolean布尔类型,true或者falseint32 位有符号整数可以转换成long类型long64 位有符号整数float单精度浮点型可以转换成...

达梦数据库初始化

达梦数据库初始化

1、dm数据库初始化认证dm数据库默认开启了ssl,在第一次登录时,使用SYSDBA用户登录,需要通过命令指定对应的ssl文件。不然会出现ssl 初始化失败的报错./disql SYSDBA/SYSD...

开源大数据集群部署(十九)Hbase部署

开源大数据集群部署(十九)Hbase部署

2.8 HBASE 安装部署hbase组件部署主机HMasterhd1.dtstack.comhd2.dtstack.comHRegionServerhd3.dtstack.com,hd2.dtsta...