配置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:

  1. 将网关证书和密钥复制到网关上的/opt/wakari/wakari-gateway/etc/目录下,分别命名为gateway.crtgateway.key

  2. 将网关CA捆绑包复制到服务器上的/opt/wakari/wakari-server/etc/

  3. 将服务器证书和密钥复制到服务器上的/etc/nginx目录下,分别命名为server.crtserver.key

  4. 将服务器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.crtserver.key证书文件。

注意:您必须更改这些值以指向您域名的签名证书文件。

注意:自签名证书或由私有根CA签名的证书需要额外的配置。

以root身份执行以下步骤:

  1. 停止NGINX:

    service nginx stop
    
  2. /etc/nginx/conf.d/www.enterprise.conf文件移动到备份目录。

  3. 复制 /opt/wakari/wakari-server/etc/nginx/conf.d/www.enterprise.https.conf 文件到 /etc/nginx/conf.d

    注意:/etc/nginx/conf.d 可能包含 www.enterprise.confwww.enterprise.https.conf,但可能不会同时包含两者。

  4. 编辑 /etc/nginx/conf.d/www.enterprise.https.conf 文件,并将 server.crtserver.key 的值 更改为实际的证书和密钥文件的名称(如果它们不同)。

  5. 通过运行以下命令重启NGINX:

    service nginx start
    
  6. 更新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
    
  7. 复制网关证书,gateway.crt/opt/wakari/wakari-server/etc/

  8. 在编辑器中,打开 /opt/wakari/wakari-server/etc/wakari/wk-server-config.json 并添加:

    "verify_gateway_certificate": "/opt/wakari/wakari-server/etc/gateway.crt"
    
  9. 通过在服务器上运行以下命令来重启AEN服务:

    service wakari-server restart
    

    注意:此步骤可能会返回错误,因为网关尚未配置SSL。

  10. 在AEN中,验证浏览器是否使用https。在管理员设置页面,数据中心下,点击网关,然后选择https:

在网关上配置SSL#

  1. 对于所有类型的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"
        }
    }
    
  2. 对于由私有根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"]
        }
     }
    
  3. 对于使用密码短语加密的网关证书,添加:

    {
       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?
    
  4. 重启网关:

    sudo service wakari-gateway restart
    

在计算节点上配置SSL#

Anaconda Enterprise 不支持在计算节点上直接使用 SSL。 如果您需要在计算节点上使用 SSL,您必须将每个计算节点安装在作为网关的同一服务器上, 并在添加资源时使用 http://localhost:5002 作为 URL 值, 并且必须为每个计算节点使用网关。

安全提醒#

证书文件的权限必须正确设置,以防止被其他人读取。由于NGINX是由root用户运行的,因此只有root用户需要读取证书文件的权限。

示例:如果证书文件名为 server.crtserver.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启用将导致服务器和网关之间的协议不匹配,从而导致您的应用程序无法正确启动。