SSL证书怎么那么坏
很久以前,我记得SSL证书只需要一年一申请,不知何时,改成了三个月。 如果你是付费用户当我没说。
全自动化申请SSL证书
得益于Certd我们可以使用流水线自动化部署SSL证书 Github | 官网
截图
开始部署
CertD提供了非常多的部署方式,几乎没有学习成本 文档地址
这里,我使用的是Docker部署,下方引用官网例子:
#随便创建一个目录
mkdir certd
#进入目录
cd certd
#下载docker-compose.yaml文件,或者手动下载放到certd目录下
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
#可以根据需要修改里面的配置
#1.修改镜像版本号【可选】
#2.配置数据保存路径【可选】
#3.修改端口号【可选】
vi docker-compose.yaml #【可选】
#启动certd
docker compose up -d
Copy
如果提示 没有docker compose命令,请安装docker-compose Plugin | Docker Docs
部署完后,请访问7001与7002端口查看可用性。
默认账号密码:admin/123456
邮件通知
进入管理后台,你可以先配置邮件通知。
若不想配置,则直接可以开始创建证书流水线
证书流水线
点击新建一个证书流水线 按照提示选填证书签发机构推荐使用Google,若使用Let’s Encrypt则可能造成不信任的证书查询地址。
只是第一次使用需要前往Google获取EAB授权。 获取教程 获取后无需服务器在海外也可申请Google证书
当你一切完毕后,你将会看到以下界面
若一切正常,你可以先点击手动触发测试
一切正常,申请成功,那很棒了!你可以返回上一级查看证书
自动化部署
雨云虚拟主机
若你和我一样,使用雨云虚拟主机(现已停售)。则需要先去SSL证书中心手动添加证书 当你手动添加后,会获得一个ID
然后去编辑流水线
添加任务 其他中选择js脚本脚本内容如下
const certPem = ctx.self.cert.crt
const certKey = ctx.self.cert.key
//axios发起http请求上传证书
const res = await ctx.http.request({
url: "https://api.v2.rainyun.com/product/sslcenter/这里改为你的SSL证书ID",
headers: {
'x-api-key': '此处填写你的雨云API'
},
method: "put",
data: {
cert: certPem,
key: certKey
}
})
if (!res || res.code !== 200) {
//抛异常才能让任务失败
throw new Error("上传失败")
}
//不能用console.log,需要用ctx.logger 才能把日志打印在ui上
ctx.logger.info("上传成功", res.data)
Copy
这个脚本是我用官网示例脚本改的,请按照内容填写两处 雨云API获取 证书ID获取
其他内容无需改动。
添加后再次申请即可自动上传至雨云。
记得在配置文件添加SSL端口
listen 443 ssl http2 ;
alt text
宝塔面板
其实Certd有宝塔面板一键部署,不过为高级版功能
如果你不想付费,则可以换种方法。
此功能未经测试,仅为理论
如果你的web和certd在同一台服务器,则只需要复制到本机即可
如果在另一台服务器,则需要上传至服务器
然后打开站点配置文件,增加SSL证书目录
ssl_certificate 证书目录;
ssl_certificate_key 密钥目录;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;