生成自签名证书

    假设实例集群拓扑如下:

    对于 Debian 或 Ubuntu 操作系统:

    对于 RedHat 或 CentOS 操作系统:

    1. yum install openssl

    也可以参考 OpenSSL 官方的下载文档进行安装。

    CA 的作用是签发证书。实际情况中,请联系你的管理员签发证书或者使用信任的 CA 机构。CA 会管理多个证书对,这里只需生成原始的一对证书,步骤如下:

    1. 生成 CA 密钥:

      1. openssl genrsa -out ca-key.pem 4096
    2. 生成 CA 证书:

      1. openssl req -new -x509 -days 1000 -key ca-key.pem -out ca.pem
    3. 验证 CA 证书:

      1. openssl x509 -text -in ca.pem -noout
    • worker certificate 由 DM-worker 使用,为其他组件验证 DM-worker 身份。
    • client certificate 由 dmctl 使用,用于 DM-master、DM-worker 验证客户端。
    1. 生成该证书对应的私钥:

    2. 拷贝一份 OpenSSL 的配置模板文件。

      模板文件可能存在多个位置,请以实际位置为准:

      1. cp /usr/lib/ssl/openssl.cnf .

      如果不知道实际位置,请在根目录下查找:

      1. find / -name openssl.cnf
    3. 编辑 openssl.cnf,在 [ req ] 字段下加入 req_extensions = v3_req,然后在 [ v3_req ] 字段下加入 。最后新建一个字段,根据前述的集群拓扑编辑 Subject Alternative Name (SAN) 的信息:

      1. [ alt_names ]
      2. IP.1 = 127.0.0.1
      3. IP.2 = 172.16.10.11
      4. IP.3 = 172.16.10.12
      5. IP.4 = 172.16.10.13

      目前支持以下 SAN 检查项:

      • IP
      • URI

    4. 保存 openssl.cnf 文件后,生成证书请求文件(在这一步中提供 Common Name (e.g. server FQDN or YOUR name) []: 输入时,可以为该证书指定 Common Name (CN),如 dm。其作用是让服务端验证接入的客户端的身份,各个组件默认不会开启验证,需要在配置文件中启用该功能才生效):

      1. openssl req -new -key master-key.pem -out master-cert.pem -config openssl.cnf
    5. 签发生成证书:

    6. 验证证书携带 SAN 字段信息(可选):

      1. openssl x509 -text -in master-cert.pem -noout
    7. 确认在当前目录下得到如下文件:

      1. ca.pem
      2. master-cert.pem
      3. master-key.pem

    注意:

    为 DM-worker 组件签发证书的过程类似,此文档不再赘述。

    为客户端签发证书的步骤如下。

    1. 生成该证书对应的私钥:

      1. openssl genrsa -out client-key.pem 2048
      1. 签发生成证书: