网络加密

Web UI HTTPS

师成师成· 更新于 2026-09-28· 阅读 15 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

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.policyHTTP_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-default.xml:

配置项默认值说明
ozone.https.server.keystore.resourcessl-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-default.xml:

属性默认值说明
ozone.https.client.need-authfalse是否要求 SSL 客户端证书认证(mTLS)。
ozone.https.client.keystore.resourcessl-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 设置生效。

评论

登录后参与评论

正在加载评论…