HTTPS 配置
配置
HTTPS
操作需要重启 ONES 服务,会造成一分钟左右的不可用
配置参数
配置项 | 类型 | 示例 | 描述 |
---|---|---|---|
base_url | string | "http://ones.example.com" | ONES 服务域名地址 |
tls_enable | boolean | true | 是否开启TLS,建议开启 |
操作步骤
配置开启 HTTPS
准备域名以及准备域名相对应的无密码证书文件并复制到最新的安装包目录下
sudo cp ones.example.com.key ones.example.com.crt /data/ones/pkg/ones-example-3.14.xxxxx
在示例中,主机域名是 ones.example.com
,因此 ONES 部署工具会查找私钥和公共证书文件,分别名为 /data/ones/pkg/ones-example-3.14.xxxxx/ones.example.com.key
和 /data/ones/pkg/ones-example-3.14.xxxxx/ones.example.com.crt
您必须以正确的顺序使用完整的证书链,以防止客户端连接时出现 SSL 错误:首先是服务器证书,然后是所有中间证书,最后是根 CA。
修改配置
登陆 ONES 服务器,进入当前运行中实例的安装目录
sudo cd /data/ones/pkg/ones-example-3.14.xxxxx
修改<tls_enable>
配置的值为 true
,修改<base_url>
配置的值为 HTTPS 的域名,例如 https://ones.example.com
sudo ./json-util -config config.json -key "base_url" -operator update -value <base_url> >/dev/null 2>&1
sudo ./json-util -config config.json -operator add -key tls_enable -valtype bool -value true
重启容器
注意:执行以下命令将造成 ONES 服务暂时不可用
进入 screen
终端,执行common.sh
脚本后选择 2
号选项,交互输入证书名称,注意只需要证书名称,等待命令执行完成
系统提示没有
screen
命令时,请通过yum install -y screen
命令安装
sudo screen -S ones
sudo bash common.sh
交互示例
[root@localhost ones-example-3.14.xxxxx]# bash common.sh
the team_uuid is
BGwiSTx3
1.pull_image
2.local_upgrade(Unconventional upgrade)
3.open_automation
4.open_performance_pro
5.init
6.change_emailPsd
7.Not Yet Open
8.Not Yet Open
9.mysqlport_open
10.mysql5.7_ex
11.first_select_login
12.wps_install
13.replace_binary
14.replace_ssl
15.enable_plugin
16.change_port
17.skip_backup_to_upgrade
18.get_audit_log_info
19.mysql8_ex(Use with caution)
If mysqlrootuser is not root,Please pass the first parameter as mysqlrootuser!!Dedicated to external database
please input your select :2
Successfully copied 11.3kB to /data/ones/pkg/ones-sop-test2-3.12.613087/dockerconfig.json
please input the path of ssl file like .pem/.crt/..:test.pem
please input the path of ssl file .key:test.key
当观察到如下输出,则重启已经完成。稍等几分钟后 ONES 服务将可以正常访问,HTTPS 配置完成
15:29:15.764114 [SQL] SELECT COUNT(1) FROM marketplace_app_installed []
15:29:15.765044 [SQL] SHOW TABLES LIKE 'app_install_record' []
15:29:15.766297 [SQL] SELECT COUNT(1) FROM app_install_record []
2023/05/29 15:29:15 P3039: Table true Data false
2023/05/29 15:29:15 P3069: Table true Data true
15:29:15.767277 [SQL] begin; []
15:29:15.767694 [SQL] SELECT uuid, create_time, status, name, owner, logo, expire_time, scale, type, visibility FROM organization LIMIT 1; []
2023/05/29 15:29:15 --- start transaction org_uuid: D1X4EdeP---
15:29:15.768948 [SQL] SELECT uuid FROM team WHERE org_uuid=? AND status=?; [1:"D1X4EdeP" 2:1]
15:29:15.770020 [SQL] SELECT * FROM license WHERE org_uuid=?; [1:"D1X4EdeP"]
2023/05/29 15:29:15 P3069 already migrated, skip.
15:29:15.771617 [SQL] commit; []
[INFO] 2023/05/29 15:29:15 upgrade success!!
验证
容器重启完成并稍等几分钟后,直接访问 HTTPS 的域名地址,例如 https://ones.example.com
,如可正常访问则正常
配置关闭 HTTPS
修改配置
登陆 ONES 服务器,进入当前运行中实例的安装目录
sudo cd /data/ones/pkg/ones-example-3.14.xxxxx
从安装目录移除证书文件
sudo mv ones.example.com.key ones.example.com.crt /tmp
修改<tls_enable>
配置的值为 false
,修改<base_url>
配置的值为 HTTP 的域名,例如 http://ones.example.com
sudo ./json-util -config config.json -key "base_url" -operator update -value <base_url> >/dev/null 2>&1
sudo ./json-util -config config.json -operator add -key tls_enable -valtype bool -value <tls_enable>
重启容器
注意:执行以下命令将造成 ONES 服务暂时不可用
进入 screen
终端,执行common.sh
脚本后选择 2
号选项,等待命令执行完成
系统提示没有
screen
命令时,请通过yum install -y screen
命令安装
sudo screen -S ones
sudo bash common.sh
验证
容器重启完成并稍等几分钟后,直接访问 HTTP 的域名地址,例如 http://ones.example.com
,如可正常访问则正常
更新 HTTPS 证书
修改配置
登陆 ONES 服务器,进入当前运行中实例的安装目录
sudo cd /data/ones/pkg/ones-example-3.14.xxxxx
从安装目录移除旧证书文件
sudo mv ones.example.com.key ones.example.com.crt /tmp
准备新的无密码证书文件并复制到最新的安装包目录下
sudo cp ones.example.com.key ones.example.com.crt /data/ones/pkg/ones-example-3.14.xxxxx
重启容器
注意:执行以下命令将造成 ONES 服务暂时不可用
进入 screen
终端,执行common.sh
脚本后选择 14
号选项 replace_ssl,交互输入新的证书信息后等待命令执行完成
系统提示没有
screen
命令时,请通过yum install -y screen
命令安装
sudo screen -S ones
sudo bash common.sh
验证
容器重启完成并稍等几分钟后,直接访问 HTTPS 的域名地址,例如 https://ones.example.com
,如可正常访问则正常
故障排查
重启容器后,ONES 服务无法访问
检查配置是否正确
cat config.json | grep -e \"tls_enable\" -e \"base_url\"
示例输出
[root@localhost ones-example-3.14.xxxxx]# cat config.json | grep -e \"tls_enable\" -e \"base_url\"
"base_url": "https://ones.example.com",
"tls_enable": true,检查证书文件有效性
openssl verify <your_certificate.pem>
如果返回如下结果,则说明证书文件无效,请重新获取证书
unable to load certificate
140590600665008:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: TRUSTED CERTIFICATE
如果上述方法都不能解决,请联系 ONES 工程师