证书部署

CertSvc系统架构的核心逻辑划分为两大部分:公有管理平台主要负责配置管理和周期性签发证书,而证书的实际部署工作则交由配套的独立应用程序——CertDeployTool来执行。该工具采用.NET 8.0技术构建,具备原生跨平台支持能力。目前,我们已针对主流操作系统编译发布了三个适用版本的软件包。

CertDeployTool在服务器上部署启动后,启动时会立即执行一次部署任务;随后每天凌晨3点定时执行部署更新。尤其值得一提的是,当检测到证书即将到期时,CertSvc平台会自动签发新的证书,并在CertDeployTool中检测到新证书时触发重新部署操作。这一自动化流程有效消除了因证书过期而需人工介入维护的必要。

CertDeployTool_win-x64.zip

CertDeployTool_linux-x64.zip

CertDeployTool_linux-arm64.zip

该程序主要包含两个配置文件 appsettings.json 用于配置账户信息

{
  "Account": {
    "Name": "",
    "PassWord": ""
  }
}

在Account 节点输入在平台注册的账户信息即可,Name 默认为手机号,密码为注册时设定的密码。

certificates.json 用于配置证书部署信息

[
  {
    "Domain": "*.aaa.net",
    "EndTime": null,
    "Path": "d:/Software/IISSSL/",
    "Format": "pfx",
    "ReloadCommand": null
  },
  {
    "Domain": "*.xxx.com",
    "EndTime": null,
    "Path": "/etc/nginx/ssl/",
    "Format": "pem",
    "ReloadCommand": "/etc/init.d/nginx reload"
  }
]

该配置文件的内容是一个 JSON 数组,支持多个证书,对象字段说明如下:

  • Domain:控制台维护的证书域名
  • EndTime:默认保持 null 即可
  • Path:用于部署存放证书的路径
  • Format:证书的格式,支持 pfx 与 pem 两种,pfx常用于 iis服务器,pem 可用于 nginx apache 等服务器。
  • ReloadCommand:用于证书部署时执行的终端命令

Windows 平台安装方法:

假设应用所在目录为 c:\CertDeployTool\

安装
sc.exe create CertDeployTool binpath= 'c:\CertDeployTool\CertDeployTool.exe --cd="true"' start= auto

启动
net start CertDeployTool

停止
net stop CertDeployTool

卸载
sc.exe delete CertDeployTool

Linux 平台安装方法:

假设应用所在目录为 /var/appdata/CertDeployTool/

设置应用目录权限为777

sudo chmod 777 -R /var/appdata/CertDeployTool

创建服务定义文件:

sudo vim /etc/systemd/system/CertDeployTool.service
[Unit]
Description=CertDeployTool

[Service]
WorkingDirectory=/var/appdata/CertDeployTool
ExecStart=/var/appdata/CertDeployTool/CertDeployTool
Restart=always
RestartSec=60
KillSignal=SIGINT
SyslogIdentifier=CertDeployTool
User=root

[Install]
WantedBy=multi-user.target

保存该文件并启用该服务。

sudo systemctl enable CertDeployTool.service

启用该服务,并确认它正在运行。

sudo systemctl start CertDeployTool.service
sudo systemctl status CertDeployTool.service