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

这篇具有很好参考价值的文章主要介绍了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 目录,找到续费配置文件,找到如下配置:

certbot生成证书,配置nginx,利用脚本自动续期
  可以看到,配置文件是手动方式,我们需要手动改成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


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

续费成功
certbot生成证书,配置nginx,利用脚本自动续期
申请成功
certbot生成证书,配置nginx,利用脚本自动续期文章来源地址https://www.toymoban.com/news/detail-414611.html

其他报错

 [Errno 17] 错误

尝试运行 certbot update_symlinks

cloudflare已经取消了对例如:ml,ga,tk等一些免费域名的续期。

不过,申请不受影响,强制续期也不受影响。

到了这里,关于certbot生成证书,配置nginx,利用脚本自动续期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SSL】用Certbot生成免费HTTPS证书

    服务器:CentOS7.x 示例域名: www.example.com 域名对应的web站点目录: /usr/local/openresty/nginx/html 注意,示例域名 www.exanple.com在certbot机器上一定要解析在公网ip,而不是解析在内网ip,否则会报错无法解析: Let’s Encrypt需要验证网站的所有权才能颁发证书, 官方称之为challenge(挑战

    2024年02月08日
    浏览(63)
  • centos7 使用letsEncrypt certbot 生成免费的ssl证书 渐进学习

    1、我们将会使用 letsencrypt 证书颁发机构里的 certbot 客户端 certbot官网,国内也可访问 2、准备工作,这一步很重要。 你首先需要有一个解析通过了的域名,什么意思呢,解析过后的域名意味着域名就是ip地址 , ip地址就是域名,我们访问域名如同访问ip地址。 你的服务器需要

    2024年02月02日
    浏览(43)
  • acme自动化---免费SSL证书申请并自动续期

    acme.sh 仓库地址:acme.sh acme.sh 中文说明:官方中文说明 各个 dnsapi 说明:dnsapi 安装 acme,后面my@example.com换成自己的邮箱 如果上面官方下载地址失败 或者 太慢,可以选用国内的备用地址 然后在 root 目录下 ls -a 就可以看到有一个 .acme.sh 的文件夹,进入后里面有个 account.conf

    2023年04月13日
    浏览(52)
  • openssl生成证书和nginx配置ssl证书

    一般情况下,使用ssl证书需要三个操作步骤:1.生成密钥对;2.生成证书请求文件;3.生成证书文件。从单纯的开发者角度来说,可以使用开源的openssl生成密钥和证书,且通过openssl的req命令,可以一个命令完成上述3个操作。 req命令主要的功能:生成证书请求文件、验证证书请

    2024年02月07日
    浏览(45)
  • Nginx中的SSL加密配置与证书生成

    目录 整体的操作流程 二、然后配置网络yum源 并mv CentOS-* backup挪动到上层目录中  三、在家目录下解压 文件,并查看  四、添加两种编译模块./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module 五、 显示少什么就 yum install (缺少的依赖的名称)-devel 下图为

    2024年02月05日
    浏览(49)
  • 用acme.sh给网站域名,申请免费SSL永久证书(自动续期)

    申请ssl证书,即https有很多,有免费的,也有收费的。如第三方域名管理cloudflare也可以自动添加使用https,而且永久。 但是由于有些服务,需要在服务器使用自签证书,所以需要自己申请。免费的可以使用certbot,也可以是使用zeroSSL。 Cerbot可以参考我以前的文章:Certbot申请免

    2024年01月23日
    浏览(56)
  • C#利用Refit实现JWT自动续期

    笔者之前开发过一套C/S架构的桌面应用,采用了JWT作为用户的登录认证和授权。遇到的唯一问题就是JWT过期了该怎么办?设想当一个用户正在进行业务操作,突然因为Token过期失效,莫名其妙地跳转到登录界面,是不是一件很无语的事。当然笔者也曾想过:为何不把JWT的有效

    2024年02月12日
    浏览(39)
  • Nginx实现自签名SSL证书生成与配置

    目录 一、Nginx实现自签名SSL证书生成与配置 1、名词介绍 2、生成私钥 3、生成公钥 4、生成解密的私钥key  5、签名生成证书 6、配置证书并验证 7、加密私钥的报错 1、名词介绍 ①key 私钥  = 明文--自己生成(genrsa ) ②csr 公钥  = 由私钥生成 ③crt  证书  = 公钥 + 签名(自签

    2024年02月15日
    浏览(53)
  • Windows.OpenSSL生成ssl证书配置到nginx

    生成一个随机数 根证书是用于证书签发的,证书的签发机构都有自己的根证书。他们的根证书一般已经打包到浏览器的受信任的根证书目录里了,我们自己签发的需要手工安装到这个目录。 OpenSSL使用PEM(Privacy Enbanced Mail)格式来保存私钥,生成私钥的命令如下: 这一步会提

    2024年01月24日
    浏览(45)
  • openssl生成https证书及nginx https配置

    一、nginx根目录下创建 cert 目录,用于存放https证书 二、openssl生成https证书证书 三、nginx配置https 参考文档:         https://blog.51cto.com/u_481814/1835713         https://www.cnblogs.com/caidingyu/p/11904277.html

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包