Let’s Encrypt 证书申请使用
github: https://github.com/certbot/certbot
官网: https://certbot.eff.org/
先安装certbot
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
申请证书
sudo ./certbot-auto certonly --standalone --email admin@abc.com -d abc.com -d www.abc.com
执行上面指令,按提示操作。
Certbot 会启动一个临时服务器来完成验证(会占用80端口或443端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。
文件保存在 /etc/letsencrypt/live/ 下面的域名目录下。
需要把要申请证书的域名先解析到这台服务器上,才能申请。
修改nginx配置
server{
listen 80;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem;
server_name abc.com www.abc.com;
root /web/abc.com/;
}
证书续期
证书有效期是3个月,把下面命令加到crontab,每2个月执行一次。
sudo nginx -s stop
sudo certbot-auto renew //刷新指令
sudo nginx
如果出现错误,则可能需要执行下面的指令:
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 python-certbot-nginx
$ sudo apt-get install letsencrypt
$ export LC_ALL="en_US.UTF-8"
$ export LC_CTYPE="en_US.UTF-8"
然后再执行:
sudo nginx -s stop
sudo certbot-auto renew //刷新指令
sudo nginx
下面这些不知道有没有效果,没确认过:
自动读取nginx配置申请证书
certbot-auto --nginx 会自动读取nginx的配置,按提示申请证书。
下面命令会自动创建定时任务
certbot-auto renew --dry-run
不重启申请证书
修改nginx配置,增加
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}
重启nginx,执行 certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d www.bifang.xyz