Intro
2023年底,一众服务器提供商纷纷发出这样的通知:
接 Digicert 厂商通知,2023年11月15日起,Digicert DV(Basic) 单域名证书有效期将从 12 个月缩短至 3 个月。
类似本站这样的非商业技术博客、个人网站,基本上都是使用免费证书。也曾打开过收费证书的价格列表页面,吓得马上就关闭了。我不配使用这么昂贵的证书。🙃
现在免费证书有效期缩短,就很难受,白嫖难度又增加了。因为这意味着,每 3 个月就申请、更换一次服务器证书。
唯一的好处是,作为非专业运维人员,更换证书的操作也变得熟练起来了。这里把我的笔记也整理一下备忘。
证书申请
各大云服务器平台,一般都有这样的资源。
TIP
以阿里云为例:登录控制台,找到 数字证书管理服务/SSL 证书,创建证书
以华为云为例:登录控制台,找到 云证书管理服务/SSL证书管理,创建测试证书
如华为云:
每个华为云账号可以免费申请20张测试证书
按提示填写一些信息,包括联系人信息、域名等。
然后系统会生成一段验证码,复制好,登录域名提供商的后台(DNS验证),添加一个 _dnsauth
TXT记录,刷新解析,稍等一会就可以回证书申请页面,手动点一下验证。
解析记录通过后,提交申请就可以了。一般都很快就会签发证书。
证书部署
证书签发成功后,下一步需要部署到服务器应用上。
如果是相同云服务提供端,可以使用平台提供的付费“自动部署”服务。可是我证书都白嫖了,会花这冤枉钱么?🙃
下面的部署过程,以我的一个 eggjs
服务为例。
首先需要修改 eggjs
服务的启动脚本,指定 https 使用的证书文件:
// ~/package.json
{
"scripts": {
"start": "egg-scripts start --daemon --title=xxx --port=443 --https.key='cert.key' --https.cert='cert.pem'",
}
}
把证书下载下来,解压准备好,会发现有针对多种不同服务类型的证书……咦,等等,为什么没有 nodejs
的?!🙃
逐个打开看了一下,发现 Nginx 的证书最接近,比较了一下里面(根本看不懂)的密钥内容,发现也是差不多。
赶紧恶补一下证书的知识:
Base64 (ASCII) 编码的文本格式。这种证书文件是可以通过文本编辑器打开,甚至进行编辑,常见有 PEM 证书格式,扩展名包括 PEM、CRT 和 KEY。
只是扩展名不同,内容是一样的,那就没问题了。把证书文件名,改成和上面启动脚本中指定的一致。
然后,将证书文件上传到服务的根目录:
scp ./cert.* root@ceil.top:/root/eggjs/
重启服务,发现浏览器已能正确识别为有效证书。
大功告成!