A.2. SGD Gateway 的组件

SGD Gateway 包含以下组件:

A.2.1. 关于路由令牌

SGD Gateway 使用路由令牌来管理 AIP 连接。路由令牌是经过签名的加密消息,用于标识路由的源 SGD 服务器和目标 SGD 服务器。该路由令牌包含用于限制令牌生命周期的时间戳。

传出的路由令牌:

  • 使用 SGD 服务器的私钥在 SGD 服务器上签名。

  • 使用 SGD Gateway 证书在 SGD 服务器上加密。

  • 发送到客户端设备上的 SGD Client。

传入路由令牌:

  • 使用 SGD Gateway 私钥在 SGD Gateway 上解密。

  • 使用源 SGD 服务器的 CA 证书在 SGD Gateway 上进行验证。

  • 在 SGD Gateway 上被丢弃。提供路由令牌的连接将路由到目标 SGD 服务器。

A.2.2. SGD Gateway 使用的密钥库

SGD Gateway 使用私钥和证书来对路由令牌进行数字签名和验证,保护与阵列中的 SGD 服务器的连接安全,保护与 SGD Gateway 的连接安全,并对反射服务访问进行授权。

©SGD Gateway 使用的证书和私钥存储在 /opt/SUNWsgdg/proxy/etc 目录下的密钥库中。

该目录包含以下密钥库:

  • SGD Gateway 密钥库。SGD Gateway 密钥库 keystore 包含 SGD Gateway 证书和私钥、阵列中 SGD 服务器的 CA 证书以及用于与阵列中 SGD 服务器建立安全连接的 SGD 服务器 SSL 证书。

    要添加、删除和列出 SGD Gateway 密钥库中的条目,请使用 gateway 命令。

  • 客户端密钥库。客户端密钥库 keystore.client 包含一个 SGD Gateway SSL 证书和私钥,用于保护客户端设备和 SGD Gateway 之间的连接安全。默认情况下,该密钥库包含自签名证书。您可以将该证书替换为由证书颁发机构 (Certificate Authority, CA) 签名的证书。

  • 反射服务密钥库。反射服务密钥库 keystore.reflection 包含一个证书和私钥,用于在 SGD Gateway 上对反射服务访问进行授权。默认情况下,该密钥库包含自签名证书和私钥。

如果在安装 SGD Gateway 后运行 gateway setup 命令,将自动创建密钥库。

注意

所有密钥库都使用 /opt/SUNWsgdg/etc/password 文件中定义的同一个密码。该密码是首次创建密钥库时自动创建的随机密码。该密码文件只能由超级用户 (root) 读取。

A.2.3. 路由代理配置文件

该路由代理配置文件为 /opt/SUNWsgdg/etc/gateway.xml。这是一个 XML 文件,用于根据数据协议类型配置路由。该文件还配置路由和 SSL 协议所需的密钥库位置和密码。

该路由代理配置文件在安装 SGD Gateway 时自动创建,并在使用 gateway config 命令更改 SGD Gateway 的配置时进行更新。

小心

使用 gateway config 命令来配置 Gateway。如有可能,避免手动编辑 gateway.xml 文件。gateway.xml 文件中的错误配置可能导致 SGD Gateway 停止运行。

默认路由代理配置文件使用 /opt/SUNWsgdg/etc/password 文件中的密码来访问 SGD Gateway 使用的密钥库。如果您不希望将该密码存储在磁盘上,请记录密码文件中的条目。删除该密码文件,并删除 gateway.xml 文件中所有 <keystore> 元素的 password 条目。当您下次启动 SGD Gateway 时,会提示您输入密钥库密码。

要更改 SGD Gateway 使用的密钥库密码,请使用带 -storepasswd 选项的 keytool 命令。例如,要更改 keystore.client 密钥库的密码,请运行以下命令:

# /opt/SUNWsgdg/java/default/bin/keytool -storepasswd \
-keystore /opt/SUNWsgdg/proxy/etc/keystore.client 

有关如何使用 keytool 应用程序的详细信息,请参见 JDK Tools and Utilities(JDK 工具和实用程序)文档。

注意

/opt/SUNWsgdg/etc 目录还包含其他 .xml.template 文件。gateway config 命令在内部使用这些文件来更新 gateway.xml 文件。请不要手动编辑这些文件。

A.2.4. Apache Web 服务器配置文件

配置用于 SGD Gateway 的 Apache Web 服务器的配置文件位于 /opt/SUNWsgdg/httpd/apache-version/conf 目录中。

此目录中的配置文件用于为 Apache Web 服务器配置反向代理操作和负载平衡。

A.2.4.1. 配置反向代理和负载平衡

用于配置反向代理操作和负载平衡的文件位于 extra/gateway 子目录中。这些文件由主要 httpd.conf 文件中的以下 Include 指令启用:

# SGD Reverse Proxy/Load Balance settings
Include conf/extra/gateway/httpd-gateway.conf

httpd-gateway.conf 文件为 Apache Web 服务器配置反向代理和负载平衡。负载平衡组的成员是使用 httpd-gateway.conf 文件中的 Include 指令定义的,如下所示:

<Proxy Balancer://mysgdservers/>
Include conf/extra/gateway/servers/*.conf
</Proxy>

extra/gateway/servers 目录包含负载平衡组中每个 SGD Web 服务器的配置文件。配置文件命名为 server-name.conf,其中 server-namegateway server add 命令中使用的服务器名称。有关此命令的更多详细信息,请参见第 B.12 节 “gateway server add”

SGD Gateway 使用粘性会话 HTTP 负载平衡。这意味着 Apache 反向代理在客户端浏览器中设置 cookie,以确保浏览器始终返回负载平衡选择的 SGD Web 服务器。cookie 在用户会话结束时过期。

粘性会话 cookie 由 httpd-gateway.conf 文件中的 Header add Set-Cookie 指令启用,如下所示:

Header add Set-Cookie "BALANCEID=balanceworker.%{BALANCER_WORKER_ROUTE}e; path=/" \
env=BALANCER_ROUTE_CHANGED

其中 BALANCEID 是 cookie 的名称,BALANCER_WORKER_ROUTEBALANCER_ROUTE_CHANGED 是 Apache mod_proxy_balancer 模块导出的环境变量。有关这些环境变量的更多信息,请参见 Apache mod_proxy_balancer 文档

A.2.5. SGD Gateway 使用的 Apache 模块

随 SGD Gateway 提供的 Apache Web 服务器使用标准 Apache 模块进行反向代理和负载平衡。这些模块是作为动态共享对象 (Dynamic Shared Object, DSO) 模块安装的。

这些模块由 httpd.conf Apache 配置文件(位于 /opt/SUNWsgdg/httpd/apache-version/conf/httpd.conf)中的 LoadModule 指令启用。