跳到主要内容

管理REST服务

REST 服务可以在每个消息 VPN 级别为进入和出去的连接进行配置。

配置进入连接

您可以为进入的 REST 客户端连接到给定消息 VPN 执行以下配置任务:

  • 配置授权头处理
  • 设置最大进入连接数
  • 设置监听端口
  • 启用 REST 明文服务
  • 启用 REST SSL 服务
  • 配置何时向 REST 客户端请求客户端证书

配置授权头处理

在 PubSub+ 事件代理上,REST 服务接收进入的 REST 请求,将其转换为 SMF 消息(包括将头复制到用户属性中),并将这些消息放置在消息总线上。默认情况下,授权头不会被复制到用户属性中,但根据您的部署,您可能希望更改此行为。

授权头处理设置仅在消息 VPN 处于网关模式时适用。

要配置事件代理如何处理进入 REST 请求的授权头,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# authorization-header-handling {drop | forward | legacy}

其中:

  • drop 指定事件代理不应将授权头作为用户属性附加到消息上。此选项最安全,也是默认值。
  • forward 指定事件代理应转发授权头,将其作为用户属性附加到消息上,就像其他头一样,允许消息的下游消费者(包括 REST 交付点)查看凭据。
  • legacy 指定除了 Authorization: Basic 之外的授权头应作为用户属性附加到消息上,就像其他头一样。Authorization: Basic 头不会作为用户属性附加到消息上,但它可以用于代理自身的基本客户端身份验证。

如果您选择 dropforward,则在同一 TCP 连接上进入 REST 请求的先前缓存的授权头不会用于身份验证进入 REST 请求。REST 服务的响应方式与请求缺少授权头时相同。

此命令的 no 版本 no authorization-header-handling 将值返回到默认设置(drop)。

由于 forwardlegacy 选项可能会影响安全性和性能,因此它们只应在特定的部署场景中使用。我们建议您在启用这些设置之前与 Solace 联系。

设置最大进入连接数

要设置可以同时连接到给定消息 VPN 的进入 REST 客户端的最大数量,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# max-connections <value>

其中:

  • <value> 是允许同时连接到给定消息 VPN 的进入 REST 客户端的最大数量。有效范围是从 0 到 Solace PubSub+ 事件代理类型可以支持的 REST 客户端的最大总数。

此命令的 no 版本 no max-connections 将值重置为事件代理支持的最大限制。

此参数可以设置为高于事件代理允许的同时连接的最大数量的值,但事件代理的连接限制仍将被强制执行。

设置监听端口

您必须为 REST 客户端配置 TCP 端口号,以便在连接到给定消息 VPN 时使用。可以为明文 REST 客户端和 SSL REST 客户端配置单独的端口。

要为 REST 连接设置监听端口,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# listen-port <port> [ssl]

其中:

  • <port> 是从 1 到 65535 的端口号。该端口不能用于任何其他服务。
  • [ssl] 指定端口用于 TLS/SSL 加密连接。

此命令的 no 版本 no listen-port 将监听端口重置为未配置状态。

只有在使用端口的服务关闭时才能配置监听端口。如果服务当前正在运行,将发生错误。

启用REST明文服务

要为给定消息 VPN 启用明文 REST 服务,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# no plain-text shutdown

在启用明文服务之前,您必须配置要使用的 TCP 端口(请参阅设置监听端口)。

要为给定消息 VPN 禁用明文 REST 服务,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# plain-text shutdown

启用REST SSL服务

要为给定消息 VPN 启用 SSL REST 服务,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# no ssl shutdown

在启用 SSL 服务之前,您必须配置要使用的 TCP 端口(请参阅设置监听端口)。

要为给定消息 VPN 禁用 SSL REST 服务,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# ssl shutdown

配置何时向REST客户端请求客户端证书

默认情况下,如果在给定消息 VPN 中启用了客户端证书身份验证,PubSub+ 事件代理会向通过 TLS 端口连接的 REST 客户端请求客户端证书。由于许多流行的 Web 浏览器对客户端证书请求处理不佳,这可能导致在 Web 浏览器中运行的客户端无法通过基于 REST 的协议连接。如果您有从 Web 浏览器连接的客户端以及在同一消息 VPN 中需要使用客户端证书进行身份验证的其他客户端,您可能希望阻止代理向进入的 REST 客户端请求客户端证书。

要配置代理何时向通过 TLS 端口连接的进入 REST 客户端请求客户端证书,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# incoming
solace(...ure/message-vpn/service/rest/incoming)# authentication
solace(.../service/rest/incoming/authentication)# client-certificate
solace(...ing/authentication/client-certificate)# request-client-certificate {always | never | when-enabled-in-message-vpn}

其中:

  • always 配置代理始终请求客户端证书,无论消息 VPN 中是否启用了客户端证书身份验证。有关更多信息,请参阅为客户端启用/禁用客户端证书身份验证。
  • never 配置代理从不请求客户端证书,无论消息 VPN 中是否启用了客户端证书身份验证。如果不想让代理向您的 REST 客户端请求客户端证书,但仍然希望为其他类型的客户端(例如网桥)使用客户端证书身份验证,则此设置很有用。
  • when-enabled-in-message-vpn 配置代理仅在消息 VPN 中启用了客户端证书身份验证时请求客户端证书。这是默认设置。

此命令的 no 版本 no request-client-certificate 将值重置为默认值。

配置出去连接

您可以为从给定消息 VPN 出去的 REST 客户端消费者连接执行以下配置任务:

  • 设置最大出去连接数
  • 配置出去连接的 SSL 证书验证设置

设置最大出去连接数

要设置给定消息 VPN 可以建立的同时 REST 消费者连接的最大数量,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service rest
solace(configure/message-vpn/service/rest)# outgoing
solace(...ure/message-vpn/service/rest/outgoing)# max-connections <value>

其中:

  • <value> 是当前消息 VPN 可以建立的 REST 消费者连接的最大数量。有效范围是从 0 到事件代理类型可以支持的 REST 消费者总数的最大值。

此命令的 no 版本 no max-connections 将此参数重置为默认值 6000。

配置出去连接的 SSL 证书验证设置

对于使用 TLS/SSL 加密的出去 REST 连接,您可以执行以下配置任务:

  • 启用服务器名称验证
  • 设置最大证书链深度
  • 启用证书日期验证

启用服务器名称验证

您可以启用或禁用 TLS 身份验证机制以验证请求的主机名。如果启用,将在出去的 TLS 连接上发送服务器名称指示(SNI)扩展,并将用于该连接的服务器名称与从远程服务器返回的证书中的主题备用名称(SAN)扩展中的服务器名称进行验证。

要启用服务器名称验证,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# rest ssl server-certificate-validation
solace(...est/ssl/server-certificate-validation)# validate-server-name

此参数默认启用。

要禁用服务器名称验证,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# rest ssl server-certificate-validation
solace(...est/ssl/server-certificate-validation)# no validate-server-name

设置最大证书链深度

max-certificate-chain-depth 参数确定证书链的最大允许深度。证书链的深度定义为证书链中回溯到受信任的自签名根 CA 证书的签名 CA 证书的数量。

要设置最大证书链深度,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# rest ssl server-certificate-validation
solace(...est/ssl/server-certificate-validation)# max-certificate-chain-depth <max-depth>

其中:

  • <max-depth> 是证书链的最大允许深度。

此命令的 no 版本 no max-certificate-chain-depth 将此参数重置为默认值 3。

启用证书日期验证

要启用服务器证书中的“不早于”和“不晚于”日期的验证,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# rest ssl server-certificate-validation
solace(...est/ssl/server-certificate-validation)# validate-certificate-date

此参数默认启用。

要禁用服务器证书中的“不早于”和“不晚于”日期的验证,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# rest ssl server-certificate-validation
solace(...est/ssl/server-certificate-validation)# no validate-certificate-date

如果此参数禁用,即使证书根据证书中的“不早于”或“不晚于”日期无效,证书仍将被接受。