CertSvc系统架构的核心逻辑划分为两大部分:公有管理平台主要负责配置管理和周期性签发证书,而证书的实际部署工作则交由配套的独立应用程序——CertDeployTool来执行。该工具采用.NET 8.0技术构建,具备原生跨平台支持能力。目前,我们已针对主流操作系统编译发布了三个适用版本的软件包。
当CertDeployTool在服务器上部署启动后,启动时会立即执行一次部署任务;随后每天凌晨3点定时执行部署更新。尤其值得一提的是,当检测到证书即将到期时,CertSvc平台会自动签发新的证书,并在CertDeployTool中检测到新证书时触发重新部署操作。这一自动化流程有效消除了因证书过期而需人工介入维护的必要。
CertDeployTool_linux-arm64.zip
该程序主要包含两个配置文件 appsettings.json 用于配置账户信息
{
"Account": {
"Name": "",
"Password": ""
}
}
在Account 节点输入在平台注册的账户信息即可,Name 默认为手机号,Password 为注册时设定的密码。
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 数组,支持多个证书,对象字段说明如下:
假设应用所在目录为 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
假设应用所在目录为 /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