使用Certbot自动获取免费的Let’s Encrypt证书,让域名可用https://访问

zsanjin 发布于 2023-05-01 158 次阅读


使用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

 

现在你就可以通过    https://域名   来访问你的网页了

感谢请我吃辣条
感谢请我吃泡面
感谢请我喝奶茶