使用certbot申请免费泛域名SSL证书
测试环境
- Ubuntu Server 20.04
- 阿里云域名
- cerbot版本1.7.0
其他环境也可以参考cerbot指南https://certbot.eff.org/instructions
预备需求
- 域名
- root权限
详细步骤
-
登录到服务器
-
安装Certbot
sudo apt install certbot
-
获取证书
输入以下命令:
sudo certbot certonly --manual --preferred-challenges=dns
certonly
表示我们只想要获取证书,--manual
表示使用手动方式,--preferred-challenges=dns
表示使用dns挑战(若要使用其他方式,请参考官方指南https://certbot.eff.org/docs/using.htm)这里使用手动获取的方式,手动获取可以不需要登录目标主机,可在其他主机上获取目标主机的ssl证书
这里使用的是dns挑战,还可以使用http挑战,如果服务器的80端口无法访问则会出现问题,推荐使用dns
这时会出现提示让你输入邮箱地址:
输入你的邮箱地址,然后按下回车
此时会让你阅读服务条款,接受即可:
此时提示是否共享你的邮箱地址,我选择不共享:
此时会让你输入你的域名,我的域名为
ocfbnj.cn
,如果要申请泛域名证书,则输入ocfbnj.cn *.ocfbnj.cn
,如果要申请单域名,则输入www.ocfbnj.cn
或zh.ocfbnj.cn
等:此时会出现一个提示,确认即可:
此时提示部署一条DNS文本记录:
这时打开阿里云云解析dns,按照上面所说的要求添加一条记录:
然后回到终端,按下回车键:
此时已成功获取证书,上面显示
/etc/letsencrypt/live/ocfbnj.cn/fullchain.pem
为证书的保存目录,/etc/letsencrypt/live/ocfbnj.cn/privkey.pem
为私匙目录。到此为止,获取过程已全部完成。
将证书配置到服务器
我使用的是nginx
服务器:
server {
listen 80;
server_name .ocfbnj.cn default_server;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name .ocfbnj.cn;
ssl_certificate /etc/letsencrypt/live/ocfbnj.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ocfbnj.cn/privkey.pem;
root /var/www/cpp/reference/zh;
location / {
}
location /common/ {
root /var/www/cpp/reference;
}
}
测试网页:
浏览器地址栏已经加锁,证书有效期为90天,到期后按照同样的方式申请即可