公共 CA 签的证书过不了 KMIP 客户端验证?官方脚本一次生成自签名五件套

痛点场景

给加密存储空间配 KMIP 远程密钥服务器,证书环节容易踩一个新坑:公共证书颁发机构(CA)签发政策的变更,导致公共 CA 签发的证书可能不包含群晖存储系统与远程 KMIP 密钥服务器进行身份验证所需的客户端身份验证属性。证书是花钱买的、域名验证也过了,偏偏 KMIP 握手就是通不过——问题不在操作,在证书属性本身。

官方对此的解法是干脆自己签:用官方提供的证书生成脚本,在群晖上一次生成整套自签名证书。

适用环境先核对

  • 仅适用于支持存储空间加密的群晖存储系统;
  • DSM 7.2 或以上:系统可作为 KMIP 服务器 KMIP 客户端运行;
  • DSM Enterprise 1.0 或以上:系统只能作为 KMIP 客户端运行;
  • 证书生成脚本只能在运行 DSM 7.4 或以上版本的群晖存储系统上运行。

也就是说:低版本机器当客户端没问题,但生成证书这台必须够新。

第一步:跑脚本生成证书五件套

  1. 先在控制面板创建一个共享文件夹(或使用现有共享文件夹),用来存放生成的证书文件;
  2. 通过具有 root 权限的 SSH 登录群晖存储系统;
  3. 下载证书生成脚本:wget supweb.synology.com/support_web/kc_tool/how_to_gen_cert_for_kmip_services/gen_kmip_certs.sh
  4. 验证脚本校验和:cksum gen_kmip_certs.sh,确保输出与下方一致:1197658570 5354 gen_kmip_certs.sh——对不上就停手,不要运行来源不明的脚本;
  5. 授予执行权限:chmod +x ./gen_kmip_certs.sh
  6. 生成证书文件:./gen_kmip_certs.sh "${shared_folder_name}"。共享文件夹名称包含空格时,用双引号括起来。

第二步:核对生成的五个文件

脚本会把以下文件存进指定共享文件夹,一个都不能少:

文件 用途
server-key.pem KMIP 服务器的私钥
server.pem KMIP 服务器的证书
client-key.pem KMIP 客户端的私钥
client.pem KMIP 客户端的证书
ca.pem 证书颁发机构(CA)

第三步:配置 KMIP 服务器一侧

在将作为 KMIP 服务器运行的群晖存储系统上:

  1. 导入证书,参数按下面取:私钥选 server-key.pem、证书选 server.pem、中间证书留空
  2. 配置已导入的证书并将其分配给 KMIP 服务
  3. 将这台群晖配置为远程密钥服务器,在 安全性 > KMIP > 远程密钥服务器 > 设置 > 管理客户端连接 > 管理中添加:
    • 客户端证书:client.pem
    • 证书颁发机构:ca.pem

第四步:配置 KMIP 客户端一侧

在将作为 KMIP 客户端运行的群晖存储系统上:

  1. 导入证书:私钥选 client-key.pem、证书选 client.pem、中间证书此字段留空
  2. 配置已导入的证书并将其分配给 KMIP 服务
  3. 将这台群晖配置为远程密钥客户端
    • 主机名:输入 KMIP 服务器的 IP 地址或主机名;
    • 证书颁发机构:上传 ca.pem。

运维提醒

  • 自签证书没有公共 CA 的到期提醒,给 ca.pem 和两端证书建立到期台账,到期前主动重签,避免密钥服务静默断链;
  • 五件套里的两把私钥(server-key.pem、client-key.pem)等同钥匙本体,生成后从共享文件夹转移到受控位置保管,共享文件夹里不留副本;
  • 校验和一段建议原样存档:换机器重跑脚本时先对 cksum,再谈下一步。

证书是 KMIP 这条信任链的地基。诚鑫致达科技在做加密存储与密钥管理交付时,会把五件套的生成、导入、分配一次性配平并留档,后续扩容客户端直接照单执行。