为 HTTPS 访问配置 apigee-sso

适用于私有云的 Edge v4.18.05

安装和配置 Edge SSO 介绍了如何安装和配置 Edge SSO 模块,以便在端口 9099 上使用 HTTP(如配置文件中的以下属性所指定):

SSO_TOMCAT_PROFILE=DEFAULT

或者,您也可以将 SSO_TOMCAT_PROFILE 设置为以下某个值,以启用 HTTPS 访问:

  • SSL_PROXY - 在代理模式下配置 apigee-sso,这意味着您已在 apigee-sso 前面安装了负载平衡器,并在负载平衡器上终止了 TLS。然后,您可以指定 apigee-sso 上用于处理来自负载平衡器的请求的端口。
  • SSL_TERMINATION - 在您选择的端口上启用了对 Edge SSO 模块 apigee-sso 的 TLS 访问权限。您必须为此模式指定一个密钥库,其中包含由 CA 签名的证书。您不能使用自签名证书。

您可以在首次安装和配置 apigee-sso 时选择启用 HTTPS,也可以稍后启用。

使用任一模式启用对 apigee-sso 的 HTTPS 访问会停用 HTTP 访问。也就是说,您不能同时使用 HTTP 和 HTTPS 访问 apigee-sso

启用 SSL_PROXY 模式

SSL_PROXY 模式下,您的系统会在 Edge SSO 模块前面使用负载平衡器,并在负载平衡器上终止 TLS。在下图中,负载平衡器会终止端口 443 上的 TLS,然后将请求转发到端口 9099 上的 Edge SSO 模块:

在此配置中,您信任从负载平衡器到 Edge SSO 模块的连接,因此无需对该连接使用 TLS。不过,外部实体(例如 SAML IDP)现在必须通过端口 443(而非未保护的端口 9099)访问 Edge SSO 模块。

SSL_PROXY 模式下配置 Edge SSO 模块的原因是,Edge SSO 模块会在身份验证流程中自动生成 IDP 在外部使用的重定向网址。因此,这些重定向网址必须包含负载平衡器的外部端口号(在此示例中为 443),而不是 Edge SSO 模块上的内部端口号(9099)。

注意:您无需为 SSL_PROXY 模式创建 TLS 证书和密钥,因为负载平衡器与 Edge SSO 模块之间的连接使用的是 HTTP。

如需为 SSL_PROXY 模式配置 Edge SSO 模块,请执行以下操作:

  1. 将以下设置添加到配置文件中:
    # Enable SSL_PROXY mode.
    SSO_TOMCAT_PROFILE=SSL_PROXY
    
    # Specify the apigee-sso port, typically between 1025 and 65535.
    # Typically ports 1024 and below require root access by apigee-sso.
    # The default is 9099.
    SSO_TOMCAT_PORT=9099
    
    # Specify the port number on the load balancer for terminating TLS.
    # This port number is necessary for apigee-sso to auto-generate redirect URLs.
    SSO_TOMCAT_PROXY_PORT=443
    SSO_PUBLIC_URL_PORT=443
    
    # Set public access scheme of apigee-sso to https.
    SSO_PUBLIC_URL_SCHEME=https
  2. 配置 Edge SSO 模块:
    /opt/apigee/apigee-service/bin/apigee-service apigee-sso setup -f configFile
  3. 更新您的 IDP 配置,以便在负载平衡器的端口 443 上发出 HTTPS 请求以访问 Edge SSO。如需了解详情,请参阅配置 SAML IDP
  4. 在配置文件中设置以下属性,以更新 Edge 界面中的 HTTPS 配置:
    SSO_PUBLIC_URL_PORT=443
    SSO_PUBLIC_URL_SCHEME=https

    然后更新 Edge 界面:

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

    如需了解详情,请参阅在 Edge 界面上启用 SAML

  5. 如果您安装了 Apigee Developer Services 门户(以下简称门户),请对其进行更新,以使用 HTTPS 访问 Ede SSO。如需了解详情,请参阅配置门户以使用 SAML 与 Edge 通信

启用 SSL_TERMINATION 模式

对于 SSL_TERMINATION 模式,您必须:

  • 生成了 TLS 证书和密钥,并将其存储在密钥库文件中。您不能使用自签名证书。您必须通过 CA 生成证书。
  • 更新 apigee-sso. 的配置设置

如需根据证书和密钥创建密钥库文件,请执行以下操作:

  1. 为 JKS 文件创建一个目录:
    sudo mkdir -p /opt/apigee/customer/application/apigee-sso/tomcat-ssl/
  2. 切换到新目录:
    cd /opt/apigee/customer/application/apigee-sso/tomcat-ssl/
  3. 创建一个包含证书和密钥的 JKS 文件。您必须为此模式指定一个密钥库,其中包含由 CA 签名的证书。您不能使用自签名证书。如需查看创建 JKS 文件的示例,请参阅为边缘设备(在本地)配置 TLS/SSL
  4. 将 JKS 文件设为由“apigee”用户拥有:
    sudo chown -R apigee:apigee /opt/apigee/customer/application/apigee-sso/tomcat-ssl

如需配置 Edge SSO 模块,请执行以下操作:

  1. 将以下设置添加到配置文件中:
    # Enable SSL_TERMINATION mode.
    SSO_TOMCAT_PROFILE=SSL_TERMINATION
    
    # Specify the path to the keystore file.
    SSO_TOMCAT_KEYSTORE_FILEPATH=/opt/apigee/customer/application/apigee-sso/tomcat-ssl/keystore.jks
    
    SSO_TOMCAT_KEYSTORE_ALIAS=sso
    
    # The password specified when you created the keystore.
    SSO_TOMCAT_KEYSTORE_PASSWORD=keystorePassword
    
    # Specify the HTTPS port number between 1025 and 65535.
    # Typically ports 1024 and below require root access by apigee-sso.
    # The default is 9099.
    SSO_TOMCAT_PORT=9443
    SSO_PUBLIC_URL_PORT=9443
    
    # Set public access scheme of apigee-sso to https.
    SSO_PUBLIC_URL_SCHEME=https
  2. 配置 Edge SSO 模块:
    /opt/apigee/apigee-service/bin/apigee-service apigee-sso setup -f configFile
  3. 更新您的 IDP 配置,以便现在通过负载平衡器的端口 9443 发出 HTTPS 请求来访问 Edge SSO。如需了解详情,请参阅配置 SAML IDP
  4. 通过设置以下属性,更新 Edge 界面中的 HTTPS 配置:
    SSO_PUBLIC_URL_PORT=9443
    SSO_PUBLIC_URL_SCHEME=https

    如需了解详情,请参阅在 Edge 界面上启用 SAML

  5. 如果您安装了开发者服务门户,请对其进行更新,以使用 HTTPS 访问 Ede SSO。如需了解详情,请参阅配置开发者服务门户以使用 SAML 与 Edge 进行通信

使用 SSL_TERMINATION 模式时设置 SSO_TOMCAT_PROXY_PORT

您可以在 Edge SSO 模块前面放置一个负载平衡器,该负载平衡器会在负载平衡器上终止 TLS,但也会在负载平衡器和 Edge SSO 之间启用 TLS。在上述图表中,对于 SSL_PROXY 模式,这意味着从负载平衡器到 Edge SSO 的连接使用 TLS。

在此场景中,您可以像上面针对 SSL_TERMINATION 模式所做的那样,在 Edge SSO 上配置 TLS。不过,如果负载平衡器使用的 TLS 端口号与 Edge SSO 用于 TLS 的端口号不同,则您还必须在配置文件中指定 SSO_TOMCAT_PROXY_PORT 属性。例如:

  • 负载平衡器在端口 443 上终止 TLS
  • Edge SSO 会在端口 9443 上终止 TLS

请务必在配置文件中添加以下设置:

# Specify the port number on the load balancer for terminating TLS.
# This port number is necessary for apigee-sso to generate redirect URLs.
SSO_TOMCAT_PROXY_PORT=443
SSO_PUBLIC_URL_PORT=443

配置 IDP 和 Edge 界面,以便在端口 443 上发出 HTTPS 请求。