近期把博客升级为HTTPS访问了。记录一下升级过程。
泛域名证书
为了在网站上启用 HTTPS,需要从证书颁发机构申请 SSL 证书。Let’s Encrypt 是一个证书颁发机构,向 Let’s Encrypt 申请证书是免费的。Let’s Encrypt 支持泛域名证书,可以满足我不想为每个子域名单独申请证书的要求。目前常用的 Let’s Encrypt 证书生成工具有 certbot
、acme.sh
、acme-tiny
,我使用的是 acme.sh
。acme.sh
申请和安装泛域名 SSL 证书相对来说是比较方便的。
安装acme.sh
1 | apt install ca-certificates |
安装完之后需要重新打开终端来使 alias 生效。
申请并部署证书
申请证书
到DNSPod控制台申请Token并设置环境变量。
1 | export DP_Id="YourId" |
再通过下面命令生成证书:
1 | acme.sh --issue --dns dns_dp -d onebug.tech -d *.onebug.tech |
这里第一个域名为顶级域名,后面一个为泛域名。这种方式将自动为域名添加一条 TXT 解析,验证成功后,这条解析记录会被自动删除。证书生成成功后,默认保存在下图的~/.acme.sh
下中。
部署证书
使用 acme.sh 部署到七牛之前,需要确保部署的域名已打开 HTTPS 功能
从七牛个人中心的密钥管理里获取 AK 和 SK,设置七牛云密钥的环境变量(建议写到.bashrc
中)
1 | export QINIU_AK="foo" |
运行 acme.sh 命令部署到七牛,由于部署的证书为泛域名证书,还需要设置 QINIU_CDN_DOMAIN
变量,指定实际需要部署的域名(用空格将域名分隔开来):
1 | export QINIU_CDN_DOMAIN="www.onebug.tech image.onebug.tech" |
在七牛云 - 证书管理 处可以确认部署的情况,并进一步进行HTTPS的设置。
定时更新
acme.sh 已经创建了定时任务,会定期更新证书(证书的有效期为90 天,acme.sh 会60天强制更新一次)。
需要添加一条来自动部署到七牛的定时任务crontab -e
:
1 | 0 0 1 * * "/home/ubuntu/.acme.sh"/acme.sh --deploy -d www.example.com --deploy-hook qiniu --home "/home/ubuntu/.acme.sh" > /dev/null |
更新博客设置
写脚本更新markdown笔记中的http链接
1 | import os |
修改站点链接、头像图链接、picgo图床等设置。
执行hexo更新命令后同步文件。
Let’s Encrypt SSL 泛域名证书申请和配置 - 知乎 (zhihu.com)
acme云服务器生成证书_使用 acme.sh 自动签发 letsencrypt 证书并部署到七牛云融合 CDN…_weixin_39924179的博客-CSDN博客、