使用Let's Encrypt(certbot)安装免费SSL证书
我们个人项目一般使用免费的SSL证书,目前可以去阿里云、腾讯云等申请免费的SSL证书,一般有效期是1年,到期后再申请新证书,或者使用Let's Encrypt(certbot)安装免费的SSL证书,本文介绍如何使用Let's Encrypt(certbot)安装免费SSL证书。
Let's Encrypt提供了新的工具叫 Certbot,和Let's Encrypt一样,生成证书方式一样,但是配置更简单,自动发行证书,证书有效期90天。
环境
CentOS7.8(CentOS Linux release 7.8.2003 (Core))
Nginx(nginx version: nginx/1.18.0)
使用Let's Encrypt生成SSL证书
先执行:
yum install epel-release
安装:
cd /root/ wget https://dl.eff.org/certbot-auto --no-check-certificate chmod +x ./certbot-auto ./certbot-auto -n
./certbot-auto -n
只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤。
生成证书:
./certbot-auto certonly --email youemail@qq.com --agree-tos --no-eff-email --webroot -w /data/web/zztuku.com -d www.zztuku.com
以上命令为域名www.zztuku.com生成一个SSL证书,你可以把域名换成你自己需要SSL证书的域名。
如果提示如下则生成成功:
生成的证书在这个目录下:/etc/letsencrypt/live/www.zztuku.com
可以看出,生成的证书有效期至2021-01-09,也就是从现在算起90天后到期,如果要续期可以使用命令: cerbot-auto renew
,本文后面会介绍如何自动续期。
使用工具Certbot生成SSL证书
如果上面使用Let's Encrypt生成证书失败,那么可以尝试使用工具Certbot来生成SSL证书。
certbot certonly --webroot -w /data/web/zztuku.com -d www.zztuku.com
将域名换成你自己需要SSL证书的域名即可。证书生成成功同样会有和上面Let's Encrypt一样的提示信息。
Nginx配置
为站点配置https,修改nginx虚拟主机配置文件,将http地址通过301定向跳转到https,新建一个443端口的server配置:
server { listen 80; server_name www.zztuku.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name www.helloweba.net; index index.html index.htm index.php; root /data/web/www.zztuku.com; ssl_certificate /etc/letsencrypt/live/www.zztuku.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.zztuku.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ### ...other settings... }
将上面的域名换成你自己的域名,然后记得重新加载nginx配置生效:
/usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload
自动续期
证书90天有效期到期后,可以手动执行更新命令,当然我们使用crontab定时任务来自动更新续期。
如果使用的是Let's Encrypt生成的证书,则 crontab -e
添加一行:
0 3 */30 * * /root/certbot-auto renew --disable-hook-validation --renew-hook "/usr/local/nginx/sbin/nginx -s reload" >> /var/log/cerbot-renew.log
如果使用的是Certbot工具生成的证书,则 crontab -e
添加一行:
0 3 */30 * * /usr/bin/certbot renew >> /var/log/cerbot-renew.log
以上命令表示,每隔30天重新续期SSL证书。
注意
如果你的站点域名已经在跑https了,那么在不影响现有的业务情况下,配置Nginx证书验证目录,让它指向Nginx的默认站点目录, 在配置文件的 server
模块下添加:
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; }
因为CertBot在验证服务器域名的时候,会生成一个随机文件,然后CertBot的服务器会通过HTTP访问你的这个文件,因此要确保你的Nginx配置好,以便可以访问到这个文件。但是验证还是在http环境下完成的。
宝塔面板
如果你的服务器使用的是宝塔面板,可以直接在SSL管理里面使用 Let's Encrypt 选项卡自动生成证书,还支持自动续签,很方便~~不过需要注意的是,如果网站存在301重定向设置,自动续签可能会不成功,关闭即可。
本文网址:https://www.zztuku.com/index.php/detail-9202.html
站长图库 - 使用Let's Encrypt(certbot)安装免费SSL证书
申明:如有侵犯,请 联系我们 删除。
您还没有登录,请 登录 后发表评论!
提示:请勿发布广告垃圾评论,否则封号处理!!