前言
关于毅融盾
毅融盾是我们近期发布的全新平台,深度融合网宿与白山 CDN 资源,提供多源智能调度、全网极速分发与立体安全防护,助力业务实现高可用、低延迟的边缘加速。
痛点与解决方案
随着 SSL 证书有效期不断缩短(从传统的 1-2 年逐步过渡至 90 天),频繁手动更换证书已成为运维工作中的痛点。手动操作不仅耗时费力,还容易因疏忽导致证书过期,进而影响业务可用性。
为解决这一难题,我们自主研发了毅融盾 CDN 的 SSL 证书自动部署模块,并成功将其集成至聚合 DNS 系统中。然而遗憾的是,该功能暂未被聚合 DNS 官方项目采纳。
为让更多有需要的用户受益,我们决定将实现方案整理成教程分享出来,供大家参考。教程中涉及的所有修改文件均已附于文末附件中。
一、准备工作:上传 Logo 图标
在配置部署驱动之前,需要先上传 Logo 图标,否则部署选项将无法显示图标。
操作步骤
1. 下载 Logo 文件:https://hydun.com/assets/img/logo.png2. 将下载的文件保存至:/public/static/images/yrd.png
📝 说明:Logo 文件名必须为
yrd.png,否则无法正确显示。
二、创建部署模块文件
在 /app/lib/deploy/ 目录下新建 yrdcdn.php 文件:
<?php
namespace app\lib\deploy;
use app\lib\DeployInterface;
use Exception;
/**
* 毅融盾 CDN SSL 证书部署驱动
*
* 该模块支持将 SSL 证书自动部署到毅融盾 CDN 平台,
* 实现多源智能调度环境下的证书自动化管理。
*/
class yrdcdn implements DeployInterface
{
private $logger;
private $username;
private $password;
private $proxy;
private $token = null;
/**
* 构造函数
* @param array $config 配置参数,包含账号、密码及代理设置
*/
public function __construct($config)
{
$this->username = $config['username'];
$this->password = $config['password'];
$this->proxy = $config['proxy'] == 1;
}
/**
* 验证账号配置信息
* @throws Exception 账号或密码为空时抛出异常
*/
public function check()
{
if (empty($this->username) || empty($this->password)) {
throw new Exception('请填写控制台账号和密码');
}
$this->request('/login/loginUser', [
'userAccount' => $this->username,
'userPwd' => $this->password,
'remember' => 'true'
]);
}
/**
* 执行证书部署
*
* @param string $fullchain 完整证书链(PEM 格式)
* @param string $privatekey 私钥内容
* @param array $config 部署配置,包含域名ID等信息
* @param mixed $info 输出信息引用
* @throws Exception 域名ID为空或部署失败时抛出异常
*/
public function deploy($fullchain, $privatekey, $config, &$info)
{
$id = $config['id'];
if (empty($id)) {
throw new Exception('域名ID不能为空');
}
// 1. 登录获取认证 Token
$this->token = $this->request('/login/loginUser', [
'userAccount' => $this->username,
'userPwd' => $this->password,
'remember' => 'true'
]);
// 2. 提交 HTTPS 证书配置
$this->request('/CdnDomainHttps/httpsConfiguration', [
'doMainId' => $id,
'https' => [
'certificate_name' => uniqid('cert_'),
'certificate_source' => '0',
'certificate_value' => $fullchain,
'https_status' => 'on',
'private_key' => $privatekey,
]
], true);
$this->log("域名ID:{$id} 更新成功!");
}
/**
* 设置日志回调函数
* @param callable $func 日志处理函数
*/
public function setLogger($func)
{
$this->logger = $func;
}
/**
* 记录日志信息
* @param string $txt 日志内容
*/
private function log($txt)
{
if ($this->logger) {
call_user_func($this->logger, $txt);
}
}
/**
* 发送 HTTP 请求
*
* @param string $path 请求路径
* @param array|null $params 请求参数
* @param bool $json 是否使用 JSON 格式发送
* @return mixed API 响应数据
* @throws Exception 请求失败时抛出异常
*/
private function request($path, $params = null, $json = false)
{
$url = 'https://rcdn.hydun.com' . $path;
$body = $json ? json_encode($params) : $params;
$headers = [];
if ($json) {
$headers['Content-Type'] = 'application/json';
}
$response = http_request(
$url,
$body,
null,
$this->token ? "kuocai_cdn_token={$this->token}" : null,
$headers,
$this->proxy
);
$result = json_decode($response['body'], true);
if (isset($result['code']) && $result['code'] == 'SUCCESS') {
return isset($result['data']) ? $result['data'] : null;
} elseif (isset($result['message'])) {
throw new Exception($result['message']);
} else {
throw new Exception('请求失败(httpCode=' . $response['code'] . ')');
}
}
}
三、配置部署驱动
在 app/lib/DeployHelper.php 文件中的 $deploy_config 数组内,添加毅融盾的配置项:
'yrdcdn' => [
'name' => '毅融盾',
'class' => 2,
'icon' => 'yrd.png',
'desc' => '替换证书管理内的证书',
'note' => '支持毅融盾及其代理商,填写控制台登录账号及密码',
// 账号配置输入项
'inputs' => [
'username' => [
'name' => '账号',
'type' => 'input',
'placeholder' => '控制台账号',
'note' => '填写手机号或邮箱',
'required' => true,
],
'password' => [
'name' => '密码',
'type' => 'input',
'placeholder' => '控制台密码',
'required' => true,
],
'proxy' => [
'name' => '使用代理服务器',
'type' => 'radio',
'options' => [
'0' => '否',
'1' => '是',
],
'value' => '0'
],
],
// 任务配置输入项
'taskinputs' => [
'id' => [
'name' => '域名ID',
'type' => 'input',
'placeholder' => '',
'note' => '在控制台 -> 我的域名 -> 配置,复制浏览器地址栏显示的域名ID(19位数字),注意域名是否与证书匹配',
'required' => true,
],
],
],
四、使用说明
4.1 获取域名 ID
- 登录毅融盾 CDN 控制台
- 进入「我的域名」页面
- 点击目标域名的「配置」按钮
- 从浏览器地址栏复制域名 ID(格式:
https://rcdn.hydun.com/xxx/domain/config/{ID}/...,其中{ID}即为所需数字)
4.2 配置步骤
| 步骤 | 操作说明 |
|---|---|
| 1 | 在聚合 DNS 系统中添加「毅融盾」账号 |
| 2 | 填写控制台登录账号和密码 |
| 3 | 创建证书部署任务,填入域名 ID |
| 4 | 绑定需要自动部署的 SSL 证书 |
| 5 | 设置自动续期触发规则 |
五、注意事项
⚠️ 重要提示
- ✅ 确保 Logo 文件已正确上传至
/public/static/images/yrd.png- ✅ 确保填写的域名 ID 与证书域名完全匹配
- ✅ 首次部署时,建议手动验证证书是否正确生效
- ✅ 如启用代理服务器,需确保代理配置正确
- ✅ 建议定期检查日志,确保自动部署流程正常运行
六、文件结构汇总
项目根目录/
├── app/lib/deploy/
│ └── yrdcdn.php # 毅融盾部署驱动
├── public/static/images/
│ └── yrd.png # 毅融盾 Logo 图标
└── app/lib/
└── DeployHelper.php # 添加毅融盾配置项
七、结语
通过以上配置,即可在聚合 DNS 系统中实现毅融盾 CDN 的 SSL 证书自动部署。该方案深度融合了网宿与白山 CDN 资源,结合多源智能调度能力,可有效提升证书管理效率,降低因证书过期导致的服务中断风险。
如果有任何问题,可以联系火毅盾旗下毅融盾工单平台提交TK













冀ICP备2024052209号-1
冀公网安备13082802000075号