在集群中的所有节点上安装 Apigee mTLS 后,必须配置和初始化 apigee-mtls
组件。您可以通过生成证书/密钥对并更新管理机上的配置文件来执行此操作。然后,您将生成的相同文件和配置文件部署到集群中的所有节点,并初始化本地 apigee-mtls
组件。
配置 apigee-mtls(初始安装后)
本部分介绍如何在初始安装后直接配置 Apigee mTLS。如需了解如何更新 Apigee mTLS 的现有安装,请参阅更改现有 apigee-mtls 配置。
本部分适用于单个数据中心内的安装。如需了解如何在多个数据中心设置中配置 Apigee mTLS,请参阅为 Apigee mTLS 配置多个数据中心。
配置 apigee-mtls
的一般过程如下:
- 更新配置文件:在管理机器上,更新配置文件以包含
apigee-mtls
设置。 - 安装 Consul 并生成凭据:安装 Consul 并(可选)使用它生成 TLS 凭据(仅限一次)。
此外,将您的 Apigee mTLS 配置文件修改为:
- 添加凭据信息
- 定义集群的拓扑
请注意,您可以使用现有凭据,也可以使用 Consul 生成凭据。
- 分发凭据和配置文件:将生成的相同证书/密钥对和更新后的配置文件分发给集群中的所有节点。
- 初始化 apigee-mtls:在每个节点上初始化
apigee-mtls
组件。
后续几个部分将介绍其中每个步骤。
第 1 步:更新配置文件
本部分介绍如何修改配置文件以包含 mTLS 配置属性。如需了解有关配置文件的更多常规信息,请参阅创建配置文件。
使用 mTLS 相关属性更新配置文件后,请先将其复制到集群中的所有节点,然后再初始化这些节点上的 apigee-mtls
组件。
如需更新配置文件,请执行以下操作:
- 在管理机器上,打开配置文件进行修改。
- 复制下面这组 mTLS 配置属性,并将其粘贴到配置文件中:
ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER" ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS" CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS" PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS" RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS" MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS" MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS" QP_MTLS_HOSTS="QPID_PRIVATE_IPS" LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS" MTLS_ENCAPSULATE_LDAP="y" ENABLE_SIDECAR_PROXY="y" ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE" PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem" PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem" APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS" TLS_MIN_VERSION="tls12" TLS_CIPHER_SUITES="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
根据您的配置设置每个属性的值。
下表介绍了这些配置属性:
属性 说明 ALL_IP
集群中所有节点的专用主机 IP 地址列表(以空格分隔)。 IP 地址的顺序无关紧要,只是在集群的所有配置文件中都必须具有相同的 IP 地址。
如果您为多个数据中心配置 Apigee mTLS,请列出所有区域中所有主机的所有 IP 地址。
LDAP_MTLS_HOSTS
集群中 OpenLDAP 节点的专用主机 IP 地址。 ZK_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,ZooKeeper 节点托管在集群中。
请注意,根据要求,必须至少有三个 ZooKeeper 节点。
CASS_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,Cassandra 服务器托管在集群中。 PG_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,Postgres 服务器托管在集群中。 RT_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,其中托管了集群中的路由器。 MTLS_ENCAPSULATE_LDAP
加密邮件处理器和 LDAP 服务器之间的 LDAP 流量。设置为 y
。MS_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,管理服务器节点托管在集群中。 MP_MTLS_HOSTS
以空格分隔的专用主机 IP 地址列表,消息处理器托管在集群中。 QP_MTLS_HOSTS
集群中托管 Qpid 服务器的专用主机 IP 地址列表(以空格分隔)。 ENABLE_SIDECAR_PROXY
确定 Cassandra 和 Postgres 是否应了解服务网格。 您必须将此值设置为“y”。
ENCRYPT_DATA
Consul 使用的 base64 编码的加密密钥。您在第 2 步:安装 Consul 并生成凭据中使用 consul keygen
命令生成了此密钥。集群中所有节点的此值必须相同。
PATH_TO_CA_CERT
节点上证书文件的位置。您在第 2 步:安装 Consul 并生成凭据中生成了此文件。 此位置在集群中所有节点上应相同,以便配置文件相同。
证书必须采用 X509v3 编码。
PATH_TO_CA_KEY
密钥文件在节点上的位置。您在第 2 步:安装 Consul 并生成凭据中生成了此文件。 此位置在集群中所有节点上应相同,以便配置文件相同。
密钥文件必须采用 X509v3 编码。
APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR
生成自定义证书时,证书的适用天数。
默认值为 365。最大值为 7865 天(5 年)。
TLS_MIN_VERSION
指定允许使用的最低 TLS 版本。设置为 tls12
可强制使用 TLS 1.2 的最低版本。TLS_CIPHER_SUITES
允许的 TLS 加密套件列表(以英文逗号分隔)。 例如:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
在多数据中心配置上安装 Apigee mTLS 时,除了使用上面列出的属性外,还会使用一些其他属性。如需了解详情,请参阅配置多个数据中心。
- 确保将
ENABLE_SIDECAR_PROXY
设置为“y”。 - 更新主机相关属性中的 IP 地址。在引用每个节点时,请务必使用专用 IP 地址,而不是公共 IP 地址。
在后续步骤中,您将设置其他属性的值,如
ENCRYPT_DATA
、PATH_TO_CA_CERT
和PATH_TO_CA_KEY
。您尚未设置这些变量的值。修改
apigee-mtls
配置属性时,请注意以下事项:- 所有属性均为字符串;您必须用单引号或双引号将所有属性的值引起来。
- 如果主机相关值有多个专用 IP 地址,请使用空格分隔每个 IP 地址。
- 对配置文件中所有与主机相关的属性使用专用 IP 地址,而不是主机名或公共 IP 地址。
- 属性值中的 IP 地址顺序必须在集群的所有配置文件中具有相同的顺序。
- 将所做的更改保存到配置文件。
第 2 步:安装 Consul 并生成凭据
本部分介绍如何安装 Consul 并生成启用了 mTLS 的组件使用的凭据。
您必须选择以下方法之一来生成凭据:
- (推荐)使用 Consul 创建您自己的证书授权机构 (CA),如本部分所述
- 将现有 CA 的凭据与 Apigee mTLS(高级)搭配使用
关于凭据
凭据由以下内容组成:
- Certificate(证书):TLS 证书
- 密钥:TLS 公钥
- Gossip 消息:base-64 编码的加密密钥
对于每个此类文件,您只需生成一次版本即可。然后将密钥和证书文件复制到集群中的所有节点,并将加密密钥添加到同样复制到所有节点的配置文件中。
如需详细了解 Consul 的加密实现,请参阅以下内容:
安装 Consul 并生成凭据
如需生成 Apigee mTLS 用于对私有云集群中的节点之间的安全通信进行身份验证的凭据,请使用本地 Consul 二进制文件。因此,您必须先在管理机上安装 Consul,然后才能生成凭据。
如需安装 Consul 并生成 mTLS 凭据,请执行以下操作:
- 在您的管理机器上,从 HashiCorp 网站下载 Consul 1.8.0 二进制文件。
- 解压缩下载的归档文件的内容。例如,将内容提取到
/opt/consul/
。 - 在您的管理机器上,通过执行以下命令来创建新的证书授权机构 (CA):
/opt/consul/consul tls ca create
Consul 会创建以下文件,这些文件构成证书/密钥对:
consul-agent-ca.pem
(证书)consul-agent-ca-key.pem
(键)
默认情况下,证书和密钥文件采用 X509v3 编码。
稍后,您需要将这些文件复制到集群中的所有节点。但是,目前您只能确定将这些文件放在节点上的位置。它们应位于每个节点上的相同位置。例如
/opt/apigee/
。 - 在配置文件中,将
PATH_TO_CA_CERT
的值设置为节点上consul-agent-ca.pem
文件将复制到的位置。例如:PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
- 将
PATH_TO_CA_KEY
的值设置为节点上consul-agent-ca-key.pem
文件将复制到的位置。例如:PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
- 通过执行以下命令为 Consul 创建加密密钥:
/opt/consul/consul keygen
Consul 会输出类似于以下内容的随机字符串:
QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
- 复制生成的这个字符串,并在配置文件中将其设置为
ENCRYPT_DATA
属性的值。例如:ENCRYPT_DATA="
QbhgD+EXAMPLE+Y9u0742X
/IqX3X429/x1cIQ+JsQvY=" - 保存配置文件。
以下示例显示了配置文件中与 mTLS 相关的设置(包含示例值):
... IP1=10.126.0.121 IP2=10.126.0.124 IP3=10.126.0.125 IP4=10.126.0.127 IP5=10.126.0.130 ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5" LDAP_MTLS_HOSTS="$IP3" ZK_MTLS_HOSTS="$IP3 $IP4 $IP5" CASS_MTLS_HOSTS="$IP3 $IP4 $IP5" PG_MTLS_HOSTS="$IP2 $IP1" RT_MTLS_HOSTS="$IP4 $IP5" MS_MTLS_HOSTS="$IP3" MP_MTLS_HOSTS="$IP4 $IP5" QP_MTLS_HOSTS="$IP2 $IP1" ENABLE_SIDECAR_PROXY="y" ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=" PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem" PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem" ...
第 3 步:分发配置文件和凭据
使用 scp
等工具将以下文件复制到所有节点:
- 配置文件:复制此文件的更新版本,并替换所有节点(而不仅仅是运行 ZooKeeper 的节点)上的现有版本。
- consul-agent-ca.pem::复制到您在配置文件中指定为
PATH_TO_CA_CERT
值的位置。 - consul-agent-ca-key.pem::复制到您在配置文件中指定为
PATH_TO_CA_KEY
值的位置。
请确保将证书和密钥文件复制到的位置与您在第 2 步:安装 Consul 并生成凭据的配置文件中设置的值相匹配。
第 4 步:初始化 apigee-mtls
在每个节点上安装 apigee-mtls
、更新配置文件并将其和凭据复制到集群中的所有节点后,您就可以初始化每个节点上的 apigee-mtls
组件了。
要初始化 apigee-mtls,请执行以下操作:
- 以根用户身份登录集群中的节点。您可以按任意顺序在节点上执行以下步骤。
- 将
apigee:apigee
用户设置为更新配置文件的所有者,如以下示例所示:chown apigee:apigee config_file
- 通过执行以下命令来配置
apigee-mtls
组件:/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
- (可选)执行以下命令,以验证设置是否成功:
/opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
- 通过执行以下命令启动 Apigee mTLS:
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls start
安装 Apigee mTLS 后,您必须先启动此组件,然后再启动节点上的任何其他组件。
- (仅限 Cassandra 节点)Cassandra 需要额外的参数才能在安全网格中正常运行。因此,您必须在每个 Cassandra 节点上执行以下命令:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- (仅限 Postgres 节点)Postgres 需要额外的参数才能在安全网格中工作。因此,您必须在 Postgres 节点上执行以下操作:
(仅主要)
- 在 Postgres 主节点执行以下命令:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
(仅限待机模式)
- 备份您现有的 Postgres 数据。如需安装 Apigee mTLS,您必须重新初始化主节点/备用节点,否则数据会丢失。如需了解详情,请参阅为 Postgres 设置主/备用复制。
- 删除所有 Postgres 数据:
rm -rf /opt/apigee/data/apigee-postgresql/pgdata
- 配置 Postgres,然后重启 Postgres,如以下示例所示:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
如果您要在多数据中心拓扑上安装,请使用配置文件的绝对路径。
- 在 Postgres 主节点执行以下命令:
- 按照启动顺序在节点上启动其余 Apigee 组件,如以下示例所示:
/opt/apigee/apigee-service/bin/apigee-service component_name start
- 对集群中的每个节点重复此过程。
- (可选)使用以下一种或多种方法,验证
apigee-mtls
初始化是否成功:- 验证 iptables 配置
- 验证远程代理状态
- 验证仲裁状态
验证您的配置中介绍了上述各种方法。
更改现有的 apigee-mtls 配置
如需自定义现有 apigee-mtls
配置,您必须卸载并重新安装 apigee-mtls
。您还必须确保将自定义设置应用到所有节点。
重申一下这一点,在更改现有 Apigee mTLS 配置时:
- 如果您要更改配置文件,则必须先卸载
apigee-mtls
,然后重新运行setup
或configure
:# DO THIS:
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
# BEFORE YOU DO THIS:/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
OR/opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
- 您必须在集群中的所有节点(而不仅仅是单个节点)上卸载并重新运行
setup
或configure
。