Web UI HTTPS
Ozone 提供了多个 Web UI(OM、SCM、Datanode、HttpFS、Recon、S3 Gateway)。本页介绍如何为这些 Web UI 启用 HTTPS,以及如何使用服务端证书和客户端证书配置可选的双向 TLS(mTLS)。
如需了解 HTTP 端点的身份认证(Kerberos/SIMPLE)方式,请参阅 Securing HTTP 文档。本页仅涉及传输层加密。
1. 启用 HTTPS 端点
Web UI 的 HTTPS 由 ozone.http.policy 属性全局控制。
配置项
| 属性 | 默认值 | 说明 |
|---|---|---|
ozone.http.policy | HTTP_ONLY | 控制是否为 Ozone 守护进程的 HTTP 端点启用 HTTPS。 |
支持的取值(来自 ozone-default.xml):
HTTP_ONLY:仅通过 HTTP 提供服务。HTTPS_ONLY:仅通过 HTTPS 提供服务。HTTP_AND_HTTPS:同时启用 HTTP 和 HTTPS 端口。
要为 Web UI 启用 HTTPS,请在 ozone-site.xml 中设置该策略,例如:
<property>
<name>ozone.http.policy</name>
<value>HTTPS_ONLY</value>
</property>或者,如果希望同时保留 HTTP 和 HTTPS 访问:
<property>
<name>ozone.http.policy</name>
<value>HTTP_AND_HTTPS</value>
</property>2. Web UI 的 HTTP 与 HTTPS 端口
每个服务都为其 HTTP 和 HTTPS Web UI 端点提供了独立的配置键。HTTPS 使用与 HTTP 不同的端口。
示例:Ozone Manager (OM)
根据 ozone-default.xml 以及网络端口参考文档:
ozone.om.http-address– 默认值0.0.0.0:9874(HTTP Web UI)ozone.om.https-address– 默认值0.0.0.0:9875(HTTPS Web UI)
在 ozone-site.xml 中的示例:
<property>
<name>ozone.om.http-address</name>
<value>0.0.0.0:9874</value>
</property>
<property>
<name>ozone.om.https-address</name>
<value>0.0.0.0:9875</value>
</property>启用 HA 时,需在每个属性后附加服务 ID 和节点 ID,例如:ozone.om.https-address.service1.om1。
其他服务
其他 Web UI 也使用相同的模式:
- SCM:
ozone.scm.http-address、ozone.scm.https-address(默认值 0.0.0.0:9876、0.0.0.0:9877) - Recon:
ozone.recon.http-address、ozone.recon.https-address(默认值 0.0.0.0:9888、0.0.0.0:9889) - S3 网关(S3G):
ozone.s3g.http-address、ozone.s3g.https-address(默认值 0.0.0.0:9878、0.0.0.0:9879) - DataNode:
hdds.datanode.http-address、hdds.datanode.https-address(默认值 0.0.0.0:9882、0.0.0.0:9883) - HttpFS:使用
httpfs.http.port及相应的 SSL 设置(参见 HttpFS 文档)
完整的默认端口和配置项列表请参阅默认端口参考文档。
3. 服务器密钥库与信任库配置
Ozone 使用标准的 Hadoop SSL 配置,主要入口是服务器密钥库资源。
配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
ozone.https.server.keystore.resource | ssl-server.xml | 读取服务器密钥库信息的资源文件 |
ssl.server.keystore.location | (空) | 服务器密钥库文件的文件系统路径 |
ssl.server.keystore.password | (空) | 服务器密钥库的密码 |
ssl.server.keystore.keypassword | (空) | 密钥库中私钥的密码 |
ssl.server.truststore.location | (空) | 服务器信任库文件的文件系统路径 |
ssl.server.truststore.password | (空) | 服务器信任库的密码 |
第 1 步 – 将 Ozone 指向服务器 SSL 资源
在 ozone-site.xml 中,你可以覆盖服务器 SSL 资源文件名:
<property>
<name>ozone.https.server.keystore.resource</name>
<value>ssl-server.xml</value>
</property>该资源通常位于类路径上,其中包含密钥库/信任库的定义。
第 2 步 —— 在 SSL 资源中定义密钥库和信任库
在所引用的 ssl-server.xml(或由 ozone.https.server.keystore.resource 指定的文件)中,配置密钥库和信任库的位置及密码:
<configuration>
<property>
<name>ssl.server.keystore.location</name>
<value>/etc/security/keystores/ozone-server.jks</value>
</property>
<property>
<name>ssl.server.keystore.password</name>
<value>changeit</value>
</property>
<property>
<name>ssl.server.keystore.keypassword</name>
<value>changeit</value>
</property>
<property>
<name>ssl.server.truststore.location</name>
<value>/etc/security/keystores/ozone-truststore.jks</value>
</property>
<property>
<name>ssl.server.truststore.password</name>
<value>changeit</value>
</property>
</configuration>要求
- 密钥库中必须包含一个主机名与 Web UI URL 相匹配的证书。
- 所有运行 Ozone Web UI 角色的主机都必须能够读取密钥库和信任库文件。
- 请使用强密码,并妥善保护这些文件。
4. 启用双向 TLS(mTLS)
默认情况下,服务器不会要求客户端证书。
配置项
| 属性 | 默认值 | 说明 |
|---|---|---|
ozone.https.client.need-auth | false | 是否要求 SSL 客户端证书认证(mTLS)。 |
ozone.https.client.keystore.resource | ssl-client.xml | 描述客户端密钥库/信任库的资源文件。 |
若要为 HTTPS Web UI 强制要求客户端证书(mTLS):
<property>
<name>ozone.https.client.need-auth</name>
<value>true</value>
</property>然后配置客户端 SSL 资源:
<property>
<name>ozone.https.client.keystore.resource</name>
<value>ssl-client.xml</value>
</property>在 ssl-client.xml 中定义客户端密钥库和信任库,例如:
<configuration>
<property>
<name>ssl.client.keystore.location</name>
<value>/etc/security/keystores/ozone-client.jks</value>
</property>
<property>
<name>ssl.client.keystore.password</name>
<value>changeit</value>
</property>
<property>
<name>ssl.client.truststore.location</name>
<value>/etc/security/keystores/ozone-client-truststore.jks</value>
</property>
<property>
<name>ssl.client.truststore.password</name>
<value>changeit</value>
</property>
</configuration>mTLS 注意事项
- 服务器信任库(
ssl.server.truststore.location)必须信任签发客户端证书的 CA。 - 客户端信任库必须信任服务器证书的 CA。
- 对于浏览器访问,客户端证书必须存放在浏览器的密钥库或底层操作系统密钥链中。
5. 最小配置示例
下面是一个最小示例,通过服务端 TLS 启用对 OM Web UI 的纯 HTTPS 访问。
在 ozone-site.xml 中:
<configuration>
<property>
<name>ozone.http.policy</name>
<value>HTTPS_ONLY</value>
</property>
<property>
<name>ozone.om.https-address</name>
<value>0.0.0.0:9875</value>
</property>
<property>
<name>ozone.https.server.keystore.resource</name>
<value>ssl-server.xml</value>
</property>
</configuration>在引用的 ssl-server.xml 中:
<configuration>
<property>
<name>ssl.server.keystore.location</name>
<value>/etc/security/keystores/ozone-server.jks</value>
</property>
<property>
<name>ssl.server.keystore.password</name>
<value>changeit</value>
</property>
<property>
<name>ssl.server.keystore.keypassword</name>
<value>changeit</value>
</property>
<property>
<name>ssl.server.truststore.location</name>
<value>/etc/security/keystores/ozone-truststore.jks</value>
</property>
<property>
<name>ssl.server.truststore.password</name>
<value>changeit</value>
</property>
</configuration>配置好服务端(以及可选的客户端)密钥库后,重启 Ozone 服务,使 HTTPS 与 mTLS 设置生效。
评论
登录后参与评论
KnowForge