在边缘消息处理器和后端服务器之间配置 SNI

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

<ph type="x-smartling-placeholder">

服务器名称指示 (SNI) 允许在同一位置提供多个 HTTPS 后端服务器, IP 地址和端口,而无需要求这些后端服务器使用同一 TLS 证书。 它是 TLS 协议的扩展。在客户端上启用 SNI 后,客户端会传递 后端服务器的主机名(在初始 TLS 握手中)。这样, TLS 服务器来确定应使用哪个 TLS 证书来验证来自 客户端。

默认情况下,对于 Private Cloud,在 Edge 中消息处理器组件上会停用 SNI 以确保向后兼容现有的后端服务器。如果您的后端服务器是 则需对消息处理器组件启用 SNI。 否则,通过 Apigee Edge 的 API 请求将失败,并显示 TLS 握手失败

本文档介绍了如何执行以下操作:

准备工作

标识已启用 SNI 的服务器

本部分介绍如何识别后端服务器是否已启用 SNI。

  1. 执行 openssl 命令并尝试连接到相关的服务器主机名 (边缘路由器或后端服务器)(不传递服务器名称),如下所示:
    openssl s_client -connect hostname:port
    
  2. 您可能会获得证书,有时可能会在 openssl 命令,如下所示:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  3. 执行 openssl 命令并尝试连接到相关服务器 传递服务器名称后指定主机名(边缘路由器或后端服务器),如下所示:
    openssl s_client -connect hostname:port -servername hostname
    
  4. 如果您在第 1 步中遇到握手失败,或者在第 1 步和第 2 步中获得了不同的证书, 则表示指定的服务器已启用 SNI。
  5. 如果要为多个后端服务器验证此设置,则需要 对每个后端服务器重复上述步骤。

如果您发现一台或多台启用了 SNI 的后端服务器,则需要 在消息处理器组件上启用 SNI,如下所述。否则,API 通过 Apigee Edge 的请求将失败,并显示 TLS 握手失败

在边缘消息处理器和后端服务器之间启用 SNI

本部分介绍如何在边缘消息处理器和后端之间启用 SNI 服务器。可以通过 jsse.enableSNIExtension 上的属性启用 SNI, 消息处理器组件要配置消息处理器上的任何属性,请使用 将令牌标识为 如何配置 Edge

<ph type="x-smartling-placeholder">

要在消息处理器上启用 SNI,请执行以下步骤:

  1. 找到 jsse.enableSNIExtension 属性的令牌
  2. 在消息处理器上启用 SNI

找到 jsse.enableSNIExtension 属性的令牌

以下步骤说明了如何查找 jsse.enableSNIExtension 属性:

  1. 在消息处理器来源中搜索 jsse.enableSNIExtension 属性 目录 /opt/apigee/edge-message-processor/source
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. 此命令的输出显示了消息处理器属性的令牌 jsse.enableSNIExtension
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    其中,{T}{/T} 标记之间的字符串是 您可以在消息处理器的 .properties 文件中进行设置。

    因此,属性 jsse.enableSNIExtension 的令牌如下所示:

    conf_system_jsse.enableSNIExtension
    

在消息处理器上启用 SNI

以下步骤介绍了如何在 Apigee Message Processor 组件上启用 SNI。

  1. 在消息处理器计算机上,在编辑器中打开以下文件。如果没有 已存在,然后创建它。
    /opt/apigee/customer/application/message-processor.properties
    

    例如,使用 vi,请输入以下命令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 将以下代码行添加到属性文件中:
    conf_system_jsse.enableSNIExtension=true
    
  3. 保存更改。
  4. 确保此属性文件归 apigee 用户所有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 按如下所示重启消息处理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 验证 SNI 配置是否已更新, 消息处理器。
  7. 如果您有多个消息处理器,请对所有 消息处理器。

停用边缘消息处理器和后端服务器之间的 SNI

通常,在启用 SNI 后应该不会出现任何问题。不过,如果您观察到 之后在边缘消息处理器和后端服务器之间出现任何连接问题, 启用 SNI 后,您随时可以通过执行以下步骤来停用 SNI。

可通过设置 jsse.enableSNIExtension 属性来停用 SNI 返回至 false

<ph type="x-smartling-placeholder">

在消息处理器上停用 SNI

以下步骤介绍了如何在 Apigee 消息处理器上停用 SNI。

  1. 在消息处理器计算机上,在编辑器中打开以下文件。如果没有 已存在,然后创建它。
    /opt/apigee/customer/application/message-processor.properties
    

    例如,使用 vi,请输入以下命令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 如果第 conf_system_jsse.enableSNIExtension=true 行存在于 /opt/apigee/customer/application/message-processor.properties,则将其修改为 如下:
    conf_system_jsse.enableSNIExtension=false
    
  3. 保存更改。
  4. 确保此属性文件归 apigee 用户所有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 按如下所示重启消息处理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 验证 SNI 配置是否已更新, 消息处理器。
  7. 如果有多个消息处理器,请对所有 消息处理器。

验证消息处理器上的 SNI 配置

本部分介绍如何验证 SNI 配置是否已成功配置 。

即使您使用令牌 conf_system_jsse.enableSNIExtension 来 在消息处理器上配置 SNI 时,需要验证实际属性 已为 jsse.enableSNIExtension 设置新值。

  1. 在消息处理器计算机上,搜索属性 jsse.enableSNIExtension 位于 /opt/apigee/edge-message-processor/conf 目录中,然后检查它是否 新值,如下所示:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. 如果在消息处理器上成功更新 SNI 配置,则 会显示 system.properties 文件中的新值。

    在消息处理器上启用 SNI 后,上述命令的示例结果 如下所示:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
    

    类似地,对 消息处理器如下所示:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
    

    在上面的示例输出中,请注意属性 jsse.enableSNIExtension 已在truefalse system.properties。这表示 SNI 已成功启用或 在消息处理器上停用

  3. 如果您仍然看到属性 jsse.enableSNIExtension 的旧值,则 确认您已按照相应部分中列出的所有步骤启用 或正确停用 SNI。如果您遗漏了任何步骤,请再次正确地重复所有步骤。
  4. 如果您仍然无法启用/禁用 SNI ,请联系 Apigee Edge 支持