返回介绍

生成自签名证书

发布于 2020-10-27 05:11:42 字数 4321 浏览 1014 评论 0 收藏 0

本文档提供使用 openssl 生成自签名证书的一个示例,用户也可以根据自己的需求生成符合要求的证书和密钥。

假设实例集群拓扑如下:

NameHost IPServices
node1172.16.10.11DM-master1
node2172.16.10.12DM-master2
node3172.16.10.13DM-master3
node4172.16.10.14DM-worker1
node5172.16.10.15DM-worker2
node6172.16.10.16DM-worker3

安装 OpenSSL

对于 Debian 或 Ubuntu 操作系统:

apt install openssl

对于 RedHat 或 CentOS 操作系统:

yum install openssl

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

生成 CA 证书

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

  1. 生成 CA 密钥:

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

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

    openssl x509 -text -in ca.pem -noout

签发各个组件的证书

集群中可能使用到的证书

  • master certificate 由 DM-master 使用,为其他组件验证 DM-master 身份。
  • worker certificate 由 DM-worker 使用,为其他组件验证 DM-worker 身份。
  • client certificate 由 dmctl 使用,用于 DM-master、DM-worker 验证客户端。

为 DM-master 签发证书

给 DM-master 实例签发证书的步骤如下:

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

    openssl genrsa -out master-key.pem 2048
  2. 拷贝一份 OpenSSL 的配置模板文件。

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

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

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

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

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

    目前支持以下 SAN 检查项:

    • IP
    • DNS
    • URI

    注意:

    如果要使用 0.0.0.0 等特殊 IP 用于连接通讯,也需要将其加入到 alt_names 中。

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

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

    openssl x509 -req -days 365 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -in master-cert.pem -out master-cert.pem -extensions v3_req -extfile openssl.cnf
  6. 验证证书携带 SAN 字段信息(可选):

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

    ca.pem
    master-cert.pem
    master-key.pem

注意:

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

为 dmctl 签发证书

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

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

    openssl genrsa -out client-key.pem 2048
  2. 生成证书请求文件(在这一步也可以为该证书指定 Common Name,其作用是让服务端验证接入的客户端的身份,默认不会开启对各个组件的验证,需要在配置文件中启用该功能才生效)

    openssl req -new -key client-key.pem -out client-cert.pem
  3. 签发生成证书:

    openssl x509 -req -days 365 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -in client-cert.pem -out client-cert.pem

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文