配置WeBASE的HTTPS¶
在WeBASE v3.0.1后,WeBASE管理台(WeBASE-Web)支持 节点管理服务WeBASE-Node-Manager 的连接采用SSL(HTTPS)的方式。
HTTPS配置方法¶
由于 节点前置WeBASE-Front 用于连接节点,一般 WeBASE-Front 与 节点管理服务WeBASE-Node-Manager 都处于内网,因此二者连接多数直接使用HTTP方式。
节点管理服务WeBASE-Node-Manager 与 WeBASE管理台(WeBASE-Web) 是后台服务与前端网页的连接,本章节提供的HTTPS配置方法就是这两者服务之间的HTTPS配置。
1. 生成SSL证书¶
生成一个SSL的自签发证书,需要使用openssl完成以下步骤:
- 生成RSA私钥.key
- 生成证书请求.csr
- 生成自签发证书.crt
- 转为pkcs12格式,并设置密码为123456
如果linux中没有安装openssl,需要安装。以CentOS为例:yum install openssl openssl-devel -y
### 生成一个RSA私钥, server.key
openssl genrsa -out server.key 2048
### 生成一个证书请求 server.csr
# 字段解读
# C字段:Country,单位所在国家,为两位数的国家缩写,如:CN 表示中国;
# ST 字段:State/Province,单位所在州或省;
# L 字段:Locality,单位所在城市/或县区;
# O 字段:Organization,此网站的单位名称;
# OU 字段:Organization Unit,下属部门名称,也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
# CN 字段:Common Name,网站的域名;例:adf.com 或IP
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=WeBank/OU=WeBASE/CN=webaseweb"
### 自己签发证书 server.crt
#如果服务器私钥与证书均由自己生成,则无法获取服务器中级CA证书,在使用自签名的临时证书时,浏览器会在地址处提示证书的颁发机构是未知的
openssl x509 -req -days 365 -signkey server.key -in server.csr -out server.crt
### 转换为pkcs12格式 server.p12
### 因为在Java中使用证书,需要转换一下格式)
### 输入命令后会提示输入证书的密码,可以设置为123456或自定义密码;该密码后续会在配置中用到
# -export:这个选项指定了一个PKCS#12文件将会被创建
# -clcerts:仅仅输出客户端证书,不输出CA证书
# -in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式
# -inkey filename:指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定
# -out filename:指定输出的pkcs12文件,默认为标准输出
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.pkcs12
# 或者
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
把生成的server.pkcs12
文件,粘贴到节点管理服务的resources目录下(或者打包后的dist/conf/目录下),并把pkcs12证书的密码(如123456)输入到配置文件中。
2. 节点管理服务WeBASE-Node-Manager¶
在v3.0.1后,节点管理服务在配置文件application.yml中加入了springboot ssl的配置,我们需要
- 修改application.yml配置文件的spring中加上
ssl
的配置,并设置enable
为true
,将key-store-password
的密码改为生成密钥时的密码 - 复制上文密钥文件,粘贴到节点管理服务的resources目录下(或者打包后的dist/conf/目录下),
修改conf/application.yml中server的配置,以pkcs12证书为例
#server config
server:
port: 5001
servlet:
context-path: /WeBASE-Node-Manager
# https
ssl:
key-store-type: pkcs12
key-store: classpath:server.pkcs12
# pkcs12证书的密码
key-store-password: 123456
# 默认false,不启用SSL。改为true即可启用
enabled: true
3. WeBASE管理台(WeBASE-Web)¶
WeBASE管理台连接启用HTTPS的节点管理服务无需修改源码,在前端的nginx.conf配置文件中加上SSL的配置,即可实现HTTPS连接。
修改nginx.conf,将WeBASE管理台的server配置中加上如下的ssl的配置
# 上文生成的.crt证书文件
ssl_certificate /data/home/webase/webase-node-mgr/conf/server.crt;
# 上文生成的.key私钥文件
ssl_certificate_key /data/home/webase/webase-node-mgr/conf/server.key;
# SSL详细配置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 120m;
ssl_prefer_server_ciphers on;
ssl_session_tickets off;
ssl_stapling_verify on;
在nginx.conf的完整例子如下:
# ...略过上文
server {
listen 5000 ssl;
server_name 127.0.0.1;
################ 此处为ssl相关配置 ##############
ssl_certificate /data/home/webase/webase-node-mgr/conf/server.crt;
ssl_certificate_key /data/home/webase/webase-node-mgr/conf/server.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 120m;
ssl_prefer_server_ciphers on;
ssl_session_tickets off;
ssl_stapling_verify on;
############## 此处为ssl相关配置 ##############
location / {
# default pc page url
root /data/home/webase/webase-web;
...
}
...
# ...略过下文
}
通过nginx -c nginx.conf -s reload即可加载新配置
如果配置了nginx的SSL后,启动nginx报错提示TLS模块确实,可在互联网中搜索错误提示的内容,将nginx的tls模块设置为启用,并尝试重启WeBASE管理台的nginx即可。