当前位置: 首页 > news >正文

certbot生成证书,配置nginx,利用脚本自动续期

踩了大量坑,做下记录。以下适用于博主本人,但是未必会适用于所有人

单域名与泛域名证书生成

sudo certbot certonly --standalone --email '邮箱' -d '域名'

# 单域名
certbot certonly --preferred-challenges dns --manual  -d *.baidu.com(修改这里) --server https://acme-v02.api.letsencrypt.org/directory

# 泛域名 手动模式
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d *.baidu.com(修改这里)

# 泛域名 自动 不想手动配置DNS用这个,配置看下面的续费脚本部分

nginx配置SSL


	    server {
	        listen 80;
	        server_name 对应的域名;
	        return 301 https://$server_name$request_uri; #强制ssl
	        location / {
				#项目地址+端口,可以本地,也可以外地
	            proxy_pass http://localhost:8080;
	        }
	
	    }
    	
    	# 443 ssl
		server {
		        listen       443 ssl;
		        server_name  对应的域名;
		
				#更改下方的证书路径
		        ssl_certificate       /etc/letsencrypt/live/baidu.com/fullchain.pem;
		        ssl_certificate_key  /etc/letsencrypt/live/baidu.com/privkey.pem;
		
		        ssl_session_cache    shared:SSL:10m; #这里可能要与其他的保持一致?
		        ssl_session_timeout  5m;
		
		        ssl_ciphers  HIGH:!aNULL:!MD5;
		        ssl_prefer_server_ciphers  on;
		
		        location / {

					#项目地址+端口,可以本地,也可以外地
		            proxy_pass http://localhost:8080;
		        }
		
		}

自动续期脚本

  在生成泛域名证书时,我们需要手动在DNS解析中配置TXT,然而续费命令renew无法去完成我们手动配置TXT的过程,需要我们手动配置,所以会报错。

  我们需要用到一个DNS插件,这样我们就不需要配置TXT了,可以直接生成证书或者续费,也可以尝试把下面命令中的厂商改成你的厂商。

DNS-plugins

  在上面链接中找到自己的服务商,我用的是cloudflare。注意:如果是国内的厂商,去GitHub上找脚本。


snap install certbot-dns-cloudflare # 我用这个没有用,我用的下面的pip安装方法

pip install certbot
pip install certbot-dns-cloudflare #注意pip与python环境的对应

  这个地方遇到了问题,很久才解决,因为我是双python环境,但是排除很久不知道哪里冲突了,干脆直接删了python3,在重新安装pip,让他变成python2的pip


certbot plugins #查看安装的插件

API Key在“My Profile”–>“API Tokens”

# 创建配置文件
touch /etc/letsencrypt/cloudflare.ini 

# 修改配置文件
vim /etc/letsencrypt/cloudflare.ini

# 添加如下内容,别忘记修改
# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234567

# 修改文件权限
chmod 600 /etc/letsencrypt/cloudflare.ini

接下来可以执行生成证书或者续费证书的操作了

修改续费配置文件(手动生成的证书才需要修改)

  如果我们使用的是手动配置的泛解析,那么我们无法直接执行renew,即使已经配置了DNS插件。
进入 /etc/letsencrypt/renewal 目录,找到续费配置文件,找到如下配置:

在这里插入图片描述
  可以看到,配置文件是手动方式,我们需要手动改成DNS方式(如果前面用的是DNS自动方式生成的证书,就没有这方面烦恼了)

  按照如下的配置进行修改:

# Options used in the renewal process
[renewalparams]
authenticator = dns-cloudflare
account = 71e9f9688487336cb4851b7174d327c6
dns_cloudflare_credentials = /etc/letsencrypt/cloudflare.ini
server = https://acme-v02.api.letsencrypt.org/directory

  如果不想修改配置,也可以重新执行上面的安装证书第三条配置命令。


certbot renew  #证书续期
certbot renew --force-renewal #强制更新 无视30天


--pre-hook:更新证书之前调用
--post-hook:更新证书之后调用
--deploy-hook:成功更新证书之后调用

# 创建一个shell脚本,内容如下:

certbot renew  --deploy-hook "nginx -s reload"

chmod +x certrenew.sh  #  赋予执行权限

# 编写cron定时任务
crontab -e

# 输入如下内容
0 0 1 * * /shell/certrenew.sh >> /shell/certrenew.log 2>&1

# 重启服务器
service crond restart

# 查看任务
crontab -l


无需续期
这里显示的是无需续费

其他报错

 [Errno 17] 错误

尝试运行 certbot update_symlinks

相关文章:

  • wordpress 中文下载/谷歌商店下载不了软件
  • 网站收藏做系统以后丢了/seo在线诊断工具
  • 网站运营有前途吗/广州市人民政府新闻办公室
  • 深圳做网站最好的公司/seo如何去做优化
  • app网站平台建设方案/百度推广竞价排名技巧
  • wordpress 滚动图片/项目平台
  • 非零基础自学Golang 第17章 HTTP编程(上) 17.2 HTTP客户端 17.2.2 Client 和 Request
  • 股票价、量走势图绘制
  • 线性杂双功能PEG试剂Biotin-PEG-Silane,Silane-PEG-Biotin,生物素-PEG-硅烷
  • P-IoT自组网模式研究
  • 一文搞懂Linux内核initrd和Debian实例
  • webgl—将多组点传给webgl系统中
  • Meta CTO专访:2023年AR/VR、元宇宙的下一步怎么走
  • EBS调用webservice
  • 大白话式粗浅地聊聊NLP语言模型
  • 【Java】Java开发工程师面试题目
  • 【自用】VUE项目 宝塔部署 上线阿里云服务器CentOS7.6
  • 计算机网络期末重点考点总复习