1. 项目目标
(1)学会使用let's encrypt申请更新ssl证书
2. 项目准备
2.1. 基础准备
系统镜像:CentOS 7.9
let's encrypt官网:Let's Encrypt - 免费的SSL/TLS证书
环境准备:
- 安装了CentOS 7操作系统。
- 拥有一个有效的阿里云账户和域名。
3. 项目实施
Certbot是一个流行的工具,用于从Let's Encrypt自动获取和续订SSL证书。虽然Certbot原生支持多种DNS提供商,但官方插件并不包括阿里云DNS。社区已经开发了相应的插件,使得我们可以通过Certbot来管理和续订使用阿里云DNS的SSL证书。
3.1. 安装Certbot及其阿里云DNS插件
- 安装Python 3.6或更高版本:
sudo yum install -y python36
- 创建一个目录用于存放Certbot相关文件:
mkdir -p /mnt/certbot
cd /mnt/certbot
- 安装Certbot及其所需的插件:
pip install certbot certbot-nginx certbot-dns-aliyun
3.2. 配置阿里云访问权限
- 在阿里云RAM控制台创建一个子账号,并授予其
AliyunDNSFullAccess
权限。
- 为该子账号生成AccessKey,并妥善保存Key ID和Access Key Secret。
3.3. 创建配置文件
在/mnt/certbot
目录下创建一个名为credentials.ini
的配置文件,并填入相应的阿里云访问密钥信息:
certbot_dns_aliyun:dns_aliyun_access_key = YOUR_ACCESS_KEY_ID
certbot_dns_aliyun:dns_aliyun_access_key_secret = YOUR_ACCESS_KEY_SECRET
3.4. 申SSL证书
使用Certbot申SSL证书,并通过certbot-dns-aliyun
插件指定DNS提供商和配置文件:
certbot certonly \
-a certbot-dns-aliyun:dns-aliyun \
--certbot-dns-aliyun:dns-aliyun-credentials /mnt/certbot/credentials.ini \
-d yourdomain.com
将yourdomain.com
替换为你的实际域名。
certbot有两种选项模式:
- --standalone选项用于直接运行Certbot,而不依赖于任何外部Web服务器。
- --webroot选项用于在现有的Web服务器上进行证书的申请和续订,而不需要停止Web服务或修改Web服务器的配置。
3.5. 配置自动续订
为了确保SSL证书保持有效,你需要设置一个定时任务来自动续订证书。编辑/etc/crontab
文件,添加以下行:
0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /mnt/certbot/venv/bin/certbot renew -q
3.6. 配置Nginx
最后,配置Nginx以使用新获取的SSL证书:
listen 80;
listen 443 ssl;
if ($scheme != https) {
rewrite ^/(.*) https://$server_name/$1 permanent;
}
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
确保将yourdomain.com
替换为你的实际域名,并根据你的Web服务器配置进行相应的调整。
nginx配置文件修改重载:
nginx -s reload
4. 项目总结
本博客利用let's encrypt申请更新了阿里云域名证书,使用的是let's encrypt推荐的certbot将域名从http更新到了https。