使用Certbot自动获取免费的Let’s Encrypt证书,让网页通过https运行
前言:
Let's Encrypt是一个免费的证书颁发机构,提供SSL/TLS证书以加密网站流量,确保通信安全。传统上,购买SSL/TLS证书需要花费很多钱,并需要繁琐的证书签发程序,而Let's Encrypt通过自动化流程简化了证书颁发过程,从而为广大用户提供了免费、方便的证书服务。
Certbot是一款由Let's Encrypt官方提供的证书管理工具,可以帮助用户自动安装、更新、和撤销SSL/TLS证书。Certbot支持多种操作系统和Web服务器,包括Apache、Nginx和IIS等。它还提供了多种插件和扩展,可以定制和增强证书管理功能。使用Certbot,用户可以轻松地获得并管理自己的Let's Encrypt证书。
先安装好nginx 相关文章:详细搭建nginx的教程
并获取了域名 相关文章:域名注册教程
再来进行本教程
①下载Certbot
安装Certbot,因为不在官方源中,需要用到EPEL源,然后再下载Certbot,不过现在很多vps预装EPEL源了,执行下面命令之后,你看到有 Complete! 字样就安装完成了
yum install epel-release
yum install certbot
②申请证书
若你安装了nginx或者其他软件占用了80或443端口,请关闭他们,然后再运行申请程序,之后再开启他们
用简单粗暴的方式关闭端口占用,fuser应该是预装的,以防万一先安装它
安装fuser
sudo yum install psmisc
简单粗暴地杀死80,443端口程序
sudo fuser -k 80/tcp
sudo fuser -k 443/tcp
执行获取证书命令,注意把xxx.com改成你自己的域名地址,若有两个域名你就 空格 -d 空格 域名 即可
certbot certonly --standalone -d www.xxx.com -d xxx.com
执行过程中会让你同意用户协议,输入邮箱,然后联网自动获取,获取成功之后,域名文件在 /etc/letsencrypt/live/你的域名/ 下,建议保存到Windows端,以便后续更换主机时直接复制到新主机里
③对web服务器nginx进行配置证书,让网页以https运行
参考之前的教程文章 nginx的搭建的详细教程 ,按这个教程,以此配置文件路径为基础展开说明配置
配置文件在/usr/local/nginx/conf/nginx.conf下,编辑它,按‘i’解除只读,写完后按‘Esc’,再按‘:wq!’或‘:q!’强制保存或退出
vi /usr/local/nginx/conf/nginx.conf
#找到这部分内容,把前面的注释#删掉
server {
listen 443 ssl;
server_name www.xxx.com; #这里是要改的地方,改你的域名
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem; #fullchain证书文件路径,建议先确认路径名字再改写
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem; #私钥,建议先确认路径名字再改写
ssl_protocols TLSv1.2 TLSv1.3; #额外增加的配置,开启TLS1.2和TSL1.3
ssl_session_cache shared:SSL:1m; #共享1M会话缓存
ssl_session_timeout 5m; #会话过期时间为5分钟
ssl_session_tickets off; #增加配置项,加速SSL会话重建的过程,设置为 off,以提高性能
ssl_ciphers HIGH:!aNULL:!MD5; #加密协议,可以改再强一点的:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on; #自动选择加密算法
ssl_ecdh_curve secp384r1;
location / {
root /home/www; #按之前配置nginx的教程设置的网页主页目录位置
index index.php index.html index.htm;
}
#配置完以上内容后,往回翻,找到监听80端口的配置项目
server {
listen 80;
server_name www.xxx.com; #改你的域名
rewrite ^(.*) https://$server_name$1 permanent; #可自动从80端口跳转至https://,你有这需求就可以加上这条
保存退出配置文件后,执行重启命令,并检查运行状态,如果出错请参考之前的nginx安装教程,执行自检命令查看语法是否有误
systemctl restart nginx
systemctl status nginx
④自动获取证书更新和手动更新
证书并非永久有效,我们设定成2个月自动更新一次,或者直接手动更新
每2个月自动更新,打开并编辑crontab
vi /etc/crontab
每2个月自动更新,关闭ngingx,自动更新,开启nginx,然后保存退出
0 0 0 */2 0 root systemctl stop nginx; /usr/bin/certbot renew; systemctl restart nginx
手动更新,关闭nginx,执行更新,开启nginx,若中途出现报80端口错误,参考本教程前面部分使用的粗暴杀死占用80端口程序的命令再重新申请证书
systemctl restart nginx
certbot renew
systemctl status nginx
Comments NOTHING