acme+cloudflare生成免费证书(自动续期)

news/2024/9/23 11:53:54

acme DNSapi

acme DNSapi的作用是在申请证书时使用dns交易,acme可以通过dnsapi在对应的dns管理平台提交对应的dns记录。玩过证书的朋友都知道,证书申请时有三种验证方式

  • 邮箱验证:需要邮箱与域名绑定(细节要求我没试过)
  • 文件验证:文件验证时证书管理方会要求你在服务器的指定路径上方一个指定文件(内容也是他们定),然后开发80端口,他们会去下载这个文件从而验证你的身份。申请域名时你需要去你的服务器上操作,还有开放指定端口
  • DNS验证:DNS验证只需要你在dns记录上添加一条TXT记录就可以

我们这里用到的就是DNS验证,DNS验证虽然方便,但是每次申请都需要添加一条DNS记录(申请完成后可以删除,acme好像自动帮忙删除了),如果要实现自动化,acme需要有权限向dns记录方提交记录。

acme dns api doce

cloudflare DNSapi

根据上面的文档可以看到cloudflare dns api 有两种方式获取

  • 生成cloudflare的全局token(全局token拥有cloudflare的所有权限,大部分是acme用不到的)
  • 生成cloudflare的DNS权限token(推荐,够acme用的了)

生成cloudflare的DNS权限token

先来cloudflare的Api申请页面

image-20240923085901516

点击这里的创建令牌

选择编辑区域DNS 这个模板(一般来说是第一个)

image-20240923085941855

安装下面的内容填写

image-20240923090119372

权限选 区域 -> DNS -> 编辑

区域资源 包括 -> 特定区域 -> 在下拉列表里选你的域名(你也可以在第二个框里面选择所有区域

剩下都不变,点继续,跳转到这个页面

image-20240923090358443

点击生成令牌,就会产生一个令牌,令牌生成后第一时间记录下来,这个令牌只显示一次,刷新页面后就看不到了

获取cloudflare的用户信息

点到cloudflare中对应的网页管理页面,在api的地方可以看到两个api key

image-20240923090719587

现在我们有三个信息

  • 上面生成的一个管理DNS的TOKEN
  • 这里的区域ID
  • 这里的账户ID

在对应服务器上生成证书

设置环境变量

export CF_Token="填DNS token" 
export CF_Zone_ID="填区域ID" 
export CF_Account_ID="填账户ID" 

安装acme

 apt update -y          #更新系统apt install -y curl    #安装curlapt install -y socat    #安装socatcurl https://get.acme.sh | sh

生成证书

acme.sh --issue --dns dns_cf -d test.fun -d "*.test.fun"

如果说找不到acme.sh,可以使用下面的命令

~/.acme.sh/acme.sh --issue --dns dns_cf -d test.fun -d "*.test.fun"

等他跑码跑完会告诉你证书的位置

image-20240923092443069

关键是上面两行your cert your cert key

上面生成的证书是 *.test.fun 的证书,所有的以test.fun结尾的域名都可以用这个证书

推荐使用: 因为acme正常2个月会自动更新一下证书,所以我不推荐你把证书移动到别的位置,因为acme下次生成的时候还会放在这个位置,要么你指定acme的证书生成路径,可以用acme.sh --help 查看怎么指定路径。我使用的方法是(有两个)

  • 直接使用这个路径

  • 通过软连接把证书链接过去

    比如我要把证书放在/etc/nginx/ssl 里面 分别命名为cert.crt priv.key我可以这样做

    cd /etc/naginx/ssl
    ln -s /home/ivhu/.acme.sh/证书路径.cer  cert.crt
    ln -s /home/ivhu/acme.sh/证书私钥.key priv.key
    

证书生成后一般会新建一个cron 的定时认为用来维护证书保证期

可以通过 crontab -e命令查看,我的结果是这样的:

image-20240923091717497

意思是每天凌晨3:28会检查一下证书

如果你的证书是给nginx用的可以在root下运行crontab -e 编辑root的cron自动化命令

添加如下:

0 4 * * * systemctl reload nginx

表示每天4:00 重启nginx ,因为nginx的证书需要重启之后才能重载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

pip install volcengine-python-sdk[ark]

解决方案: 需要修改注册表的变量 https://github.com/volcengine/volcengine-python-sdk/issues/5

python面试题

python是什么?Python是一种开放原始码、直译式、可携式、面向对象的程序语言,具有模块、多线程、异常处理以及自动内存管理功能。广泛应用包括Web开发(如Django和Flask框架)、数据科学(如Pandas和NumPy库)、机器学习(如TensorFlow和PyTorch框架)、自动化脚本、科学计算…

基于gin的web开发脚手架模版

一、web开发模式 1.传统的MVC模式:这个模式不太适合大型的web应用。 2.CLD模式链接:https://github.com/Ruan0423/gin-web-Framework 二、目录结构 --web_app-controller-logic-dao-mysql-redis-models-pkg-settingssettings.go-routersrouter.gomain.gogo.modgo.sumconfig.y…

OpenAI o1模型揭秘:通过LLMs学习推理能力

OpenAI推出了o1,这是一种通过强化学习训练的大型语言模型,专门用于进行复杂的推理任务。o1在回答问题之前会“思考”,能够在响应用户之前生成一条长的内部思维链。 在编程竞赛问题(Codeforces)中,OpenAI o1的排名在89%分位,位列美国数学奥林匹克预选赛(AIME)前500名学…

网站数据库为什么连接失败

网站数据库连接失败可能有以下几个常见原因:数据库配置错误:数据库连接参数配置错误,如用户名、密码、主机地址、端口号、数据库名称等配置不正确。 应用程序中的数据库配置文件(如WordPress中的wp-config.php)可能包含了错误的信息。网络问题:数据库服务器与应用程序服务…

Spark(五)运行环境(一)

Local模式不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等 在IDEA中运行代码的环境称之为开发环境1、解压缩文件将spark-3.0.0-bin-hadoop3.2.tgz文件上传到Linux并解压缩,放置在指定位置,路径中不要包含中文或空格 压缩文件放在/opt/so…

树上数据结构问题

天天爱跑步 假设现在又一棵树如果一个人要从 \(3\) 跑到 \(5\),那么如果在 \(2\) 点的观察员要满足 \(w[2] = dep[2] - dep[3]\),如果在点 \(4\) 的观察员要满足 \(w[4] = dep[fa[lca]] - dep[3] + dep[lca] - dep[4]\),简单来说就是如果处于 \(i\) 点的观察员可以观察到,那么要…

为什么网站连接数据库失败?

网站连接数据库失败通常是由以下几个主要原因造成的:数据库凭据错误:如果数据库用户名、密码或主机名错误,网站将无法建立数据库连接。请检查wp-config.php文件中的数据库连接信息是否正确。数据库服务器故障:数据库服务器宕机或无法访问也会导致连接失败。检查数据库服务是…