适用于私有云的 Edge v. 4.17.05
TLS(传输层安全协议,其前身是 SSL)是一种标准的安全技术 可确保在 API 环境中进行安全的加密消息传递。您可以配置 TLS 。
下图显示了具有单个 BaaS 门户的 API BaaS 的典型部署图 和三个 API BaaS 堆栈节点。
开发者使用浏览器向门户发出请求。默认情况下,这些请求使用 协议。
此部署在门户和堆栈节点之间添加负载平衡器。在本课中, 之后,该门户会向负载平衡器发送 HTTP 请求,然后负载平衡器 将请求转发到堆栈节点之一。这是推荐的部署 为生产系统运行环境
TLS 配置选项
为 API BaaS 配置 TLS 时,您有以下几种选择:
- 在门户和栈节点的负载平衡器上配置 TLS
在此配置中,开发者使用 HTTPS 协议访问门户,而门户 浏览器会使用 HTTPS 通过 进行负载均衡。负载平衡器使用 HTTP 访问堆栈节点。 - 在门户、负载平衡器和堆栈节点上配置 TLS
为了提高安全性,请将负载平衡器配置为使用 TLS 访问堆栈节点。 - 在门户和单个堆栈节点上配置 TLS
在小型环境(例如测试或开发环境)中,您可能只有一个 单个堆栈节点,这意味着无需添加负载平衡器。在此配置中 在门户和堆栈节点上配置 TLS。 - 在门户的负载平衡器上配置 TLS
上文未显示的一个选项是在门户节点前面使用负载平衡器。在该部分中, 您可以在负载平衡器上配置 TLS 负载平衡器和门户之间的连接。
确保 TLS 端口已打开
以下步骤将在默认门户端口 9000 和堆栈节点 8080 上配置 TLS。 不过,您可以根据需要更改此端口。
无论您使用哪个端口,都必须确保该端口在节点上处于打开状态。对于 例如,您可以使用以下命令打开端口 8443:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
在 API BaaS 堆栈上配置 TLS
对于 API BaaS 堆栈,TLS 默认处于停用状态。然后,您可以通过以下方式通过 HTTP 访问 BaaS API: 使用堆栈节点的 IP 地址或 DNS 名称和端口 8080。例如:
http://stack_IP:8080
或者,您也可以为 BaaS API 配置 TLS 访问,以便 表单:
https://stack_IP:8080
在此示例中,您将 TLS 访问配置为使用端口 8080。但端口 8080 不是必需的 - 您可以将堆栈配置为使用其他端口。唯一的要求是防火墙 允许通过指定端口的流量。
堆栈在单个端口上仅支持一种类型的请求(HTTP 或 HTTPS)。因此, 如果您在端口 8080 上配置 HTTPS 访问,则无法使用 HTTP 访问端口 8080。如果您 将堆栈配置为使用端口 8443 与 HTTPS,则堆栈将不再通过端口进行监听 8080。
请按照以下步骤配置对堆栈的 TLS 访问:
- 生成包含 TLS 证书和私钥的密钥库 JKS 文件。有关
请参阅为 Edge On 配置 TLS/SSL
场所。
注意:请确保密钥库和密钥上的密码相同。 - 将密钥库 JKS 文件复制到堆栈节点上的某个目录中,例如 /opt/apigee/customer/application。 该目录必须可供“apigee”访问用户。
- 将 JKS 文件的所有权更改为“apigee”用户:
>chown apigee:apigee /opt/apigee/customer/application/keystore.jks
其中 keystore.jks 是其名称 密钥存储区文件的名称 - 修改 /opt/apigee/customer/application/usergrid.properties
文件来设置以下属性,包括 JKS 文件的路径和密码
密钥库和密钥如果该文件不存在,请创建:
tomcat-server_scheme=https
tomcat-server_secure=true
tomcat-server_ssl.enabled=true
tomcat-server_keystore.type=JKS
tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
tomcat-server_keystore.password=password
tomcat-server_keyalias=keystore_alias
tomcat-server_clientauth.enabled=false
tomcat-server_ssl.protocols=TLSv1、TLSv1.1、TLSv1.2
# 默认情况下,TLS 访问使用端口 8080。
# 请使用此属性指定其他端口。
# tomcat-server_port=8080
警告:password 值必须为明文。 因此,您应防止 usergrid.properties 未经授权 访问权限。
使用 tomcat-server_keyalias 属性指定密钥库别名。请在创建密钥时设置密钥别名。 例如,您可以在 keytool 命令中使用 -alias 选项进行设置。
使用 tomcat-server_ssl.protocols 来设置堆栈支持的 TLS 协议。有关 Java 8 支持的协议列表, 请参阅 http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename。 - 配置堆栈节点:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 配置 - 重启 BaaS 堆栈:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - 使用以下命令在堆栈节点上运行以下 c网址 命令,确认 TLS 正常运行:
HTTPS:
>curl -k https://localhost:8080/status -v
如果 TLS 配置正确,您应该会看到包含状态信息的响应。
如果您通过 8080 之外的端口配置了 TLS 访问,请修改上述命令以使用 正确的端口。 - 在所有堆栈节点上重复上述步骤。
- 如果您在堆栈节点前面有一个负载平衡器,请配置
负载平衡器通过 HTTPS 向堆栈节点发出请求。请参阅
负载平衡器。
如果 Portal 向 Stack 发出直接请求,请将该 Portal 配置为 按照下一部分所述,通过 HTTPS 访问堆栈。 - 请按照以下“在堆栈或门户上为 TLS 配置 API BaaS 堆栈节点”中的步骤进行操作 确保堆栈节点在生成用户 响应。
正在配置 门户,通过 TLS 访问 Stack
在浏览器中运行的 BaaS 门户通过对 BaaS 堆栈进行 API 调用来正常运行。如果您 配置 BaaS 堆栈以使用 TLS,那么您还必须配置门户以发出这些调用 HTTPS 协议
API BaaS 安装通常配置为:
- 在门户节点和栈节点之间使用负载平衡器
将负载平衡器配置为通过 HTTPS 向堆栈节点发出请求。请参阅 文档。
在此配置中,门户可以通过 HTTP 或 HTTPS 访问负载平衡器,具体取决于 负载平衡器的配置方式如果负载平衡器使用 TLS,请按照以下步骤进行操作 配置门户以向 HTTPS 负载平衡器发出请求。 - 让 Portal 直接向 Stack 发出请求
如下所述,配置门户以通过 HTTPS 访问堆栈。
请按照以下步骤配置 API BaaS 门户,以通过 HTTPS 进行 API 调用:
- 如上所述,在 BaaS 堆栈上配置 TLS 访问, 按照负载平衡器的文档中的说明堆叠节点。
- 修改 /opt/apigee/customer/application/portal.properties
设置以下属性。如果该文件不存在,请创建:
baas.portal.config.overrideUrl=https://stackIP:port
将 API 堆栈节点的 IP 地址或 DNS 名称以及端口指定为此属性的值。 或负载平衡器(如果您的前端有负载平衡器的话) API BaaS 堆栈节点。 - 配置门户节点:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - 使用以下命令重启门户:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - 如果您在配置对堆栈的 TLS 访问权限时使用了自签名证书
上方,那么您的浏览器可能不允许从门户向 Stack 发出请求。如果您看到
在浏览器中出现不允许 HTTPS 访问堆栈的错误,请请求以下
网址,并添加安全例外情况以允许访问:
https://stackIP:port/status
指定 API 栈节点或负载平衡器的 IP 地址或 DNS 名称以及端口。
在 API BaaS 门户上配置 TLS
默认情况下,用户通过端口 9000 上的未加密 HTTP 请求来访问门户网站。 门户服务器。您可以将该门户配置为使用 HTTPS 对发送到和发自 。
默认情况下,您可以使用门户的 IP 地址或 DNS 名称通过 HTTP 访问门户 节点和端口 9000例如:
http://portal_IP:9000
或者,您也可以为门户配置 TLS 访问,以便在 表单:
https://portal_IP:9443
在此示例中,您将 TLS 访问配置为使用端口 9443。但端口 9443 不是必需的 - 您可以将门户网站配置为使用其他端口。
门户只能通过单个端口支持一种类型的请求(HTTP 或 HTTPS)。因此, 如果您在端口 9000 上配置 HTTPS 访问,则无法使用 HTTP 访问端口 9000。如果您 将门户配置为通过 HTTPS 使用端口 9443,则门户将不再通过端口进行监听 9,000。
要为门户配置 TLS,请执行以下操作:
- 创建 PEM 格式的密钥文件和证书文件。
注意:请确保密钥或证书上没有密码/口令。 - 将 PEM 文件复制到门户节点上的某个目录,例如 /opt/apigee/customer/application。 该目录必须可供“apigee”访问用户。
- 将 PEM 文件的所有权更改为“apigee”用户:
>chown apigee:apigee /opt/apigee/customer/application/*.PEM - 修改 /opt/apigee/customer/application/portal.properties
文件来设置以下属性。如果该文件不存在,请创建它:
baas.portal.ssl=on
baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
# 默认情况下,TLS 访问使用端口 9000。
# 请使用此属性指定其他端口。
# baas.portal.listen=9000
使用 baas.portal.ssl.protocols 来设置门户支持的 TLS 协议。有关支持的协议的列表,请参阅 Nginx 定义的 SSL 协议名称列表:http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols。 - 配置门户节点:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - 重启门户:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - 请按照以下“在堆栈或门户上为 TLS 配置 API BaaS 堆栈节点”中的步骤进行操作 以确保 Stack 节点具有针对门户的正确 TLS 网址。
为传输层安全协议 (TLS) 上的 堆栈或传送门
如果您在堆栈节点或门户节点前添加了负载平衡器,或者启用了 TLS 所以你必须使用正确的网址来配置节点 访问堆栈和门户。例如,在以下情况下,堆栈节点需要此信息:
- 在 BaaS API 请求的响应中包含网址。
- 在重置密码或发送其他电子邮件模板时,在电子邮件模板中添加链接。 通知。
- 将用户重定向到特定的门户页面。
如果您在堆栈节点前使用负载平衡器,或在堆栈节点上配置 TLS,请设置 /opt/apigee/customer/application/usergrid.properties 中的以下属性:
usergrid-deployment_usergrid.api.url.base=http://localhost:8080
将 http://localhost:8080 替换为加载网址的网址 进行负载均衡。如果负载平衡器配置为使用 TLS,请使用 HTTPS 协议。仅您本人 如果您使用的是非标准端口(即端口以外的其他端口),则需要包含该端口。 HTTP 为 80,HTTPS 为端口 443。
如果满足以下条件,您还必须在 /opt/apigee/customer/application/portal.properties 中设置以下属性: 您在堆栈节点前使用负载平衡器:
baas.portal.config.overrideUrl=http://localhost:8080
将 http://localhost:8080 替换为 进行负载均衡
如果您在门户节点前面使用负载平衡器,或在堆栈节点上配置 TLS,请设置 usergrid.properties 中的以下属性:
usergrid-deployment_portal.url=http://localhost:9000
将 http://localhost:9000 替换为 进行负载均衡器如果负载平衡器配置为使用 TLS,请使用 HTTPS 协议。您 只有在您使用非标准端口(也就是 HTTP 端口 80 和 HTTPS 端口 443
修改 usergrid.properties 后:
- 配置堆栈节点:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 配置 - 重启 BaaS 堆栈:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - 如果您修改了 portal.properties,请配置
门户节点:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - 重启 BaaS 门户:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart