# 配置 EMQX TLS 证书

# 任务目标

  • 如何通过 extraVolumes 和 extraVolumeMounts 字段配置 EMQX TLS 证书。

# EMQX 集群 TLS 证书配置

  • 基于 TLS 证书创建 Secret

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象,其文档可以参考:Secret (opens new window)。在本文中我们使用 Secret 保存 TLS 证书信息,因此在创建 EMQX 集群之前我们需要基于 TLS 证书创建好 Secret。

apiVersion: v1
kind: Secret
metadata:
  name: emqx-tls
type: kubernetes.io/tls
stringData:
  ca.crt: |
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
  tls.crt: |
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
  tls.key: |
    -----BEGIN RSA PRIVATE KEY-----
    ...
    -----END RSA PRIVATE KEY-----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

说明ca.crt 表示 CA 证书内容,tls.crt 表示服务端证书内容,tls.key 表示服务端私钥内容。此例中上述三个字段的内容被省略,请用自己证书的内容进行填充。

将上述文件保存为:secret-tls.yaml,并执行如下命令创建 secret:

kubectl apply -f secret-tls.yaml 
1

输出类似于:

secret/emqx-tls created
1
  • 配置 EMQX 集群

将上述文件保存为:emqx-tls.yaml,并执行如下命令部署 EMQX 集群:

kubectl apply -f emqx-tls.yaml
1

输出类似于:

emqx.apps.emqx.io/emqx created
1
  • 检查 EMQX 集群是否就绪

# 验证 TLS 证书是否生效

  • 使用 MQTT X 连接 EMQX 集群发送消息

MQTT X 是一款完全开源的 MQTT 5.0 跨平台桌面客户端。支持快速创建多个同时在线的 MQTT 客户端连接,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接、发布、订阅功能及其他 MQTT 协议特性。更多 MQTT X 的使用文档可以参考:MQTT X (opens new window)。接下来我们会使用 MQTT X 连接 EMQX 集群进行消息的发送和订阅,来验证 TLS 证书是否生效。

在 MQTT X 页面点击创建新连接的按钮,按照如图所示配置 EMQX 集群节点信息和 CA 证书路径,在配置好连接信息之后,点击 connect 按钮连接 EMQX 集群:

然后点击订阅按钮新建订阅,如图所示 MQTT X 已成功连接 EMQX 集群并且已经成功创建订阅:

在成功连接 EMQX 集群并创建订阅之后,我们就可以向 EMQX 集群发送消息,如下图所示:

从上面的图中可以看到,订阅端能正常接收到客户端发送的 MQTT 消息,则说明我们配置的 TLS 是生效的。