配置SSL#
服务器节点使用NGINX来代理所有传入的http(s)请求到运行在本地端口的服务器,并使用NGINX进行SSL终止。默认设置使用http——非SSL——因为配置SSL需要证书文件,而每个企业都有自己的证书文件。
www.enterprise.conf
文件是用于 AEN 的默认 nginx.conf
文件。它在服务器安装期间被复制到 /etc/nginx/conf.d
目录中。
注意:本节介绍在您的网关节点已安装并注册到服务器节点后设置SSL的过程。
复制所需的文件#
要在AEN上配置SSL,您将需要以下文件:
服务器证书和密钥
服务器CA包
网关证书和密钥
网关CA包
在AEN上配置SSL:
将网关证书和密钥复制到网关上的
/opt/wakari/wakari-gateway/etc/
目录下,分别命名为gateway.crt
和gateway.key
。将网关CA捆绑包复制到服务器上的
/opt/wakari/wakari-server/etc/
。将服务器证书和密钥复制到服务器上的
/etc/nginx
目录下,分别命名为server.crt
和server.key
。将服务器CA捆绑包复制到网关上的
/opt/wakari/wakari-gateway/etc/
。
如果您有一个由私有根证书颁发机构和/或中间机构签名的证书:
网关CA包必须包含完整的链:根CA、任何中间机构以及证书。
cat gateway.crt intermediate.crt root.crt >> gatway-crt-int-root.crt
服务器CA包必须分为根CA、任何中间证书和证书的单独文件。
在服务器节点上配置SSL#
www.enterprise.https.conf
是一个用于SSL的NGINX配置文件。它被设置为使用server.crt
和server.key
证书文件。
注意:您必须更改这些值以指向您域名的签名证书文件。
注意:自签名证书或由私有根CA签名的证书需要额外的配置。
以root身份执行以下步骤:
停止NGINX:
service nginx stop
将
/etc/nginx/conf.d/www.enterprise.conf
文件移动到备份目录。复制
/opt/wakari/wakari-server/etc/nginx/conf.d/www.enterprise.https.conf
文件到/etc/nginx/conf.d
。注意:
/etc/nginx/conf.d
可能包含www.enterprise.conf
或www.enterprise.https.conf
,但可能不会同时包含两者。编辑
/etc/nginx/conf.d/www.enterprise.https.conf
文件,并将server.crt
和server.key
的值 更改为实际的证书和密钥文件的名称(如果它们不同)。通过运行以下命令重启NGINX:
service nginx start
更新WAKARI_SERVER和CDN设置,在以下配置文件中使用https代替http:
/opt/wakari/wakari-server/etc/wakari/config.json /opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json /opt/wakari/wakari-compute/etc/wakari/config.json
复制网关证书,
gateway.crt
到/opt/wakari/wakari-server/etc/
。在编辑器中,打开
/opt/wakari/wakari-server/etc/wakari/wk-server-config.json
并添加:"verify_gateway_certificate": "/opt/wakari/wakari-server/etc/gateway.crt"
通过在服务器上运行以下命令来重启AEN服务:
service wakari-server restart
注意:此步骤可能会返回错误,因为网关尚未配置SSL。
在AEN中,验证浏览器是否使用https。在管理员设置页面,数据中心下,点击网关,然后选择https:
在网关上配置SSL#
对于所有类型的SSL证书, 在
/opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json
中,添加:{ EXISTING_CONFIGURATION, "https": { "key": "/opt/wakari/wakari-gateway/etc/gateway.key", "cert": "/opt/wakari/wakari-gateway/etc/gateway.crt" } }
对于由私有根CA或由中间机构签名的服务器证书,添加:
{ EXISTING_CONFIGURATION, "https": { "key": "/opt/wakari/wakari-gateway/etc/gateway.key", "cert": "/opt/wakari/wakari-gateway/etc/gateway.crt", "ca": ["/opt/wakari/wakari-gateway/etc/server.crt"] } }
注意:当证书链中有多个由更高级别的根CA机构签名的中间证书时,您必须手动将链中的证书拆分为单独的文件,并在
ca
键中枚举它们:{ EXISTING_CONFIGURATION, "https": { "key": "/opt/wakari/wakari-gateway/etc/gateway.key", "cert": "/opt/wakari/wakari-gateway/etc/gateway.crt", "ca": ["/opt/wakari/wakari-gateway/etc/server1.crt", "/opt/wakari/wakari-gateway/etc/server2.crt", "/opt/wakari/wakari-gateway/etc/server3.crt"] } }
对于使用密码短语加密的网关证书,添加:
{ EXISTING_CONFIGURATION, "https": { "key": "/opt/wakari/wakari-gateway/etc/gateway.key", "cert": "/opt/wakari/wakari-gateway/etc/gateway.crt", "passphrase": "mysecretpassphrase" } }
注意:另外,密码短语可以通过环境变量传递,或者在手动启动 wakari-gateway 服务时输入。
示例:
# using an environment variable AEN_GATEWAY_SSL_PASSPHRASE='mysecretpassphrase' wk-gateway
# starting wakari-gateway manually sudo service wakari-gateway start --ask-for-passphrase Passphrase?
重启网关:
sudo service wakari-gateway restart
在计算节点上配置SSL#
Anaconda Enterprise 不支持在计算节点上直接使用 SSL。
如果您需要在计算节点上使用 SSL,您必须将每个计算节点安装在作为网关的同一服务器上,
并在添加资源时使用 http://localhost:5002
作为 URL 值,
并且必须为每个计算节点使用网关。
安全提醒#
证书文件的权限必须正确设置,以防止被其他人读取。由于NGINX是由root用户运行的,因此只有root用户需要读取证书文件的权限。
示例:如果证书文件名为 server.crt
和
server.key
,则使用 root 账户设置权限:
chmod 600 server.key
chmod 600 server.crt
启用或禁用Strict-Transport-Security头#
默认情况下,Strict-Transport-Security (STS) 在 www.enterprise.https.conf
文件中启用:
add_header Strict-Transport-Security max-age=31536000;
如果以下任一条件为真,它可以保持启用状态:
网关运行在与服务器不同的主机上。
或
网关已启用SSL。
如果以下两个条件都成立,您必须注释掉这一行:
网关与服务器运行在同一主机上。
和
网关尚未启用SSL。
当这些条件为真时,保持STS启用将导致服务器和网关之间的协议不匹配,从而导致您的应用程序无法正确启动。