最近发现我用的宝塔面板,在自动申请Let's Encrypt
的功能上面,抽风了。。具体来说就是完全没法申请下来
去论坛提问也没人管,搜了下发现至少有两个人和我遇到了相同的情况(letsencrypt证书申请报错),无奈自行手动部署证书
安装官方的Certbot
这部直接参考官方文档就好了:https://certbot.eff.org/docs/install.html
由于我是ubuntu,所以我用下面的命令来安装
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
获取证书
这一步只要你nginx网址正常能访问,并且你知道你网站的路径,就能直接申请:
sudo certbot certonly --webroot -w /www/wwwroot/bt.papapoi.com -d bt.papapoi.com --email [email protected]
当然,如果你同一站点指向多个域名,可以单证书多域名:
sudo certbot certonly --webroot -w /www/wwwroot/www.chenxublog.com -d www.chenxublog.com -d blog.papapoi.com --email [email protected]
证书全部会在/etc/letsencrypt/live/
这个路径下面
配置
首先删掉宝塔默认的智障ssl配置,改成下面这样,注意域名和路径之类的按自己的实际情况修改:
server
{
listen 80;
listen 443 ssl http2;
server_name bt.papapoi.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/bt.papapoi.com;
#http强制跳转到https
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
ssl_certificate /etc/letsencrypt/live/bt.papapoi.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bt.papapoi.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
limit_conn perserver 300;
limit_conn perip 25;
limit_rate 512k;
#SSL-END
#下面的省略。。。。
#.............
}
自动更新证书
更新证书很简单,运行下面的命令就可以了
sudo certbot renew
只要把这个命令放到crontab
里,一个月跑一次就好了
附cron的用法和配置方法:如何在Linux中加入cron任务?
转载保留版权:晨旭的博客 » 《nginx手动部署Let’s Encrypt证书并自动更新》如果喜欢可以: 点击右侧上方的邮件订阅,订阅本站