配置 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 捆绑包必须包含完整链:根 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,则必须将每个计算节点安装在与网关相同的服务器上,在添加为资源时 URL 值使用 http://localhost:5002,并且您必须为每个计算节点使用一个网关。

安全提醒#

必须正确设置证书文件的权限,以防止其他人读取它们。由于 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 将导致服务器和网关之间的协议不匹配,从而导致您的应用程序无法正确启动。