为管理界面配置 TLS

默认情况下,您可以使用管理服务器节点的 IP 地址和端口 9000,通过 HTTP 访问边缘界面。例如:

http://ms_IP:9000

或者,您也可以配置对 Edge 界面的 TLS 访问权限,以便以以下形式访问该界面:

https://ms_IP:9443

在此示例中,您将 TLS 访问配置为使用端口 9443。不过,Edge 不需要该端口号 - 您可以将管理服务器配置为使用其他端口值。唯一的要求是,您的防火墙允许通过指定端口传输流量。

确保 TLS 端口处于打开状态

本部分中的步骤会将 TLS 配置为使用管理服务器上的端口 9443。 无论您使用哪个端口,都必须确保该端口在管理服务器上处于打开状态。例如,您可以使用以下命令打开它:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9443 -j ACCEPT --verbose

配置 TLS

请按照以下步骤配置对管理界面的 TLS 访问权限:

  1. 生成包含 TLS 认证和私钥的密钥库 JKS 文件,并将其复制到管理服务器节点。如需了解详情,请参阅为边缘设备 (On Premises) 配置 TLS/SSL
  2. 运行以下命令以配置 TLS:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl
  3. 输入 HTTPS 端口号,例如 9443。
  4. 指定是否要停用对管理界面的 HTTP 访问权限。默认情况下,管理界面可以在端口 9000 上通过 HTTP 访问。
  5. 输入密钥库算法。默认值为 JKS。
  6. 输入密钥库 JKS 文件的绝对路径。

    该脚本会将文件复制到管理服务器节点上的 /opt/apigee/customer/conf 目录,并将文件的所有权更改为“apigee”。

  7. 输入明文密钥库密码。
  8. 然后,脚本会重启 Edge 管理界面。重启后,管理界面支持通过 TLS 访问。

    您可以在/opt/apigee/etc/edge-ui.d/SSL.sh中查看这些设置。

使用配置文件配置 TLS

作为上述过程的替代方案,您可以在该过程的第 2 步中将配置文件传递给命令。如果您想设置可选的 TLS 属性,则需要使用此方法。

如需使用配置文件,请创建一个新文件并添加以下属性:

HTTPSPORT=9443
DISABLE_HTTP=y
# Set type to PKCS12 if you are using a PKCS12 keystore
KEY_ALGO=JKS
KEY_FILE_PATH=/opt/apigee/customer/application/mykeystore.jks
KEY_PASS=clearTextKeystorePWord

将该文件保存到本地目录中,并为其指定任意名称。 然后,使用以下命令配置 TLS:

/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f configFile

其中 configFile 是您保存的文件的完整路径。

针对启用了 FIPS 的操作系统使用 PKCS12 密钥库

如果您在启用了 FIPS 的操作系统上使用 Edge for Private Cloud,则应使用 PKCS12 密钥库。您可以使用标准 OpenSSL 命令生成 PKCS12 密钥库。使用 PKCS12 密钥库时,请在配置文件中设置 KEY_ALGO=PKCS12

配置在负载平衡器上终止 TLS 时的边缘界面

如果您有将请求转发到 Edge 界面的负载平衡器,则可以选择终止负载平衡器上的 TLS 连接,然后让负载平衡器通过 HTTP 将请求转发到 Edge 界面。此配置受支持,但您需要相应地配置负载平衡器和 Edge 界面。

如果 Edge 界面在创建用户或请求重置丢失的密码时向用户发送电子邮件来设置密码,则需要进行额外配置。此电子邮件包含用户选择用于设置或重置密码的网址。默认情况下,如果 Edge 界面未配置为使用 TLS,则生成的电子邮件中的网址将使用 HTTP 协议,而不是 HTTPS。 您必须配置负载平衡器和 Edge 界面,以生成使用 HTTPS 的电子邮件地址。

如需配置负载平衡器,请确保它在转发到 Edge 界面的请求中设置以下标头:

X-Forwarded-Proto: https

如需配置 Edge 界面,请执行以下操作:

  1. 在编辑器中打开 /opt/apigee/customer/application/ui.properties 文件。如果该文件不存在,请通过以下命令进行创建:
    vi /opt/apigee/customer/application/ui.properties
  2. ui.properties 中设置以下属性:
    conf/application.conf+trustxforwarded=true
  3. 将所做的更改保存到 ui.properties
  4. 重启 Edge 界面:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

设置可选的 TLS 属性

Edge 界面支持可选的 TLS 配置属性,您可以使用这些属性设置以下内容:

  • 默认 TLS 协议
  • 支持的 TLS 协议列表
  • 支持的 TLS 算法
  • 支持的 TLS 加密方式

只有在您在配置文件中设置以下配置属性的情况下,这些可选参数才可用,如使用配置文件配置 TLS中所述:

TLS_CONFIGURE=y

下表介绍了这些属性:

属性 说明
TLS_PROTOCOL 为 Edge 界面定义默认 TLS 协议。默认值为 TLS 1.2。 有效值为 TLSv1.2、TLSv1.1、TLSv1。
TLS_ENABLED_PROTOCOL

将已启用的协议列表定义为以英文逗号分隔的数组。例如:

TLS_ENABLED_PROTOCOL=[\"TLSv1.2\", \"TLSv1.1\", \"TLSv1\"]

请注意,您必须对 " 字符进行转义。

默认情况下,所有协议均处于启用状态。

TLS_DISABLED_ALGO

定义已停用的加密套件,还可用于防止使用小密钥大小进行 TLS 握手。没有默认值。

传递给 TLS_DISABLED_ALGO 的值与 jdk.tls.disabledAlgorithms 的允许值相对应,如此处所述。不过,在设置 TLS_DISABLED_ALGO 时,您必须转义空格字符:

TLS_DISABLED_ALGO=EC\ keySize\ <\ 160,RSA\ keySize\ <\ 2048

TLS_ENABLED_CIPHERS

将可用 TLS 加密算法列表定义为以英文逗号分隔的数组。例如:

TLS_ENABLED_CIPHERS=[\"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\",
\"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\"]

请注意,您必须对 " 字符进行转义。

启用的加密算法的默认列表如下:

"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_AES_128_CBC_SHA",
"SSL_RSA_WITH_RC4_128_SHA",
"SSL_RSA_WITH_RC4_128_MD5",
"TLS_EMPTY_RENEGOTIATION_INFO_SCSV"

您可以在此处找到可用加密算法的列表。

停用 TLS 协议

如需停用 TLS 协议,您需要修改配置文件(如使用配置文件配置 TLS 中所述),如下所示:

  1. 在编辑器中打开配置文件。
  2. 如需停用单个 TLS 协议(例如 TLSv1.0),请将以下内容添加到配置文件中:
    TLS_CONFIGURE=y
    TLS_DISABLED_ALGO="tlsv1"

    如需停用多个协议(例如 TLSv1.0 和 TLSv1.1),请将以下内容添加到配置文件中:

    TLS_CONFIGURE=y
    TLS_DISABLED_ALGO="tlsv1, tlsv1.1"
  3. 将所做的更改保存到配置文件。
  4. 运行以下命令以配置 TLS:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f configFile

    其中,configFile 是配置文件的完整路径。

  5. 重启 Edge 界面:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

使用安全 Cookie

Apigee Edge for Private Cloud 支持将 secure 标志添加到 Set-Cookie 标头,以便从 Edge 界面获取响应。如果此标志存在,Cookie 就只能通过已启用 TLS 的渠道发送。如果未设置此标志,则 Cookie 可通过任何渠道(无论是否安全)发送。

不带 secure 标志的 Cookie 可能会允许攻击者捕获并重复使用 Cookie 或盗用有效会话。因此,最佳实践是启用此设置。

如需为 Edge 界面 Cookie 设置 secure 标志,请执行以下操作

  1. 在文本编辑器中打开以下文件:
    /opt/apigee/customer/application/ui.properties

    如果该文件不存在,请创建该文件。

  2. ui.properties 文件中将 conf_application_session.secure 属性设置为 true,如以下示例所示:
    conf_application_session.secure=true
  3. 保存更改。
  4. 使用 apigee-serice 实用程序重启 Edge 界面,如以下示例所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

如需确认更改是否有效,请使用 curl 等实用程序检查 Edge 界面中的响应标头,例如:

curl -i -v https://edge_UI_URL

标头应包含如下所示的行:

Set-Cookie: secure; ...

在 Edge 界面上停用 TLS

如需在 Edge 界面上停用 TLS,请使用以下命令:

/opt/apigee/apigee-service/bin/apigee-service edge-ui disable-ssl