侧边栏壁纸
  • 累计撰写 3 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

acme.sh使用Let's Encrypt+Cloudflare API的方式申请SSL证书

UDMT
2023-01-31 / 0 评论 / 0 点赞 / 665 阅读 / 876 字

碎碎念

日常在群里潜水时发现的很多小伙伴使用Docker搭建Nginx Proxy Manager的做Web服务器,然后遇到Internal Error以后一脸懵逼,只能求助群友。

诚然对于新手而言申请证书+Nginx配置的过程看起来让人望而却步,而恰巧NPM有个看起来相对友好的界面,提供了一站式的解决方案,让人觉得应该会很好入门,然而使用起来却经常在碰到各种问题以后经常令人无处着手。

究其原因根源还是不理解整个流程,而NPM又把acem.sh和Nginx的细节隐藏起来成为了一个黑盒,所以一旦发生错误,就完全无处着手了,只能各种尝试,但acem.sh证书申请过程恰恰是最容易发生报错的,尤其初期各种折腾的阶段,有可能前面一次是成功的而完全相同的设置后一次就是失败的,导致最后只能在不断尝试以后靠玄学配置,或在不断尝试不断失败后最终放弃。

个人而言,这个折腾的过程中花费的时间精力成本,真不如直接上手acme.sh和Nginx,去完整的走完整个流程,这其实也能更有效的理解NPM如何使用,但其实往往理解以后会发现完全没有必要为了个界面去使用NPM了。

好了废话少说,为了解决小伙伴们的入门难题,方便小伙伴们入坑,我这里准备通过两篇文章,提供一个高成功率的基础案例,这是第一篇使用acme.sh使用Let's Encrypt+Cloudflare API的方式申请SSL证书,那么现在开始吧。

前置条件

  1. 申请注册Coudflare账号
  2. 将域名托管至Cloudflare
  3. 获取Global API Key

安装 acme.sh

安装很简单, 一个命令:

curl https://get.acme.sh | sh -s [email protected]    #记得改成自己的邮箱

设置别名:

alias acme.sh=~/.acme.sh/acme.sh    #以后直接用acme.sh命令就能运行了,不用再输入完整路径

设置自动更新:

acme.sh --upgrade --auto-upgrade

申请证书

设置必要参数:

CF_Domain="域名"    #替换为你自己的域名,例子:输入aa.com,则自动申请aa.com和*.aa.com的所有二级域名的泛域名证书
CF_AccountEmail="Cloudflare账号邮箱"    # #替换为你自己的Cloudflare账号邮箱
CF_GlobalKey="Cloudflare Global API KEY"    #获替换为你自己的Global API Key ,取方式:登录cloudflare -> 右上角用户图标 -> 我的个人资料 -> API令牌  -> Global API Key 查看
Cert_Path=/root/cert    #可以修改为自己喜欢的路径

创建目录+清除已有的证书:

if [ ! -d "$Cert_Path" ]; then
	mkdir $Cert_Path
else
	rm -rf $Cert_Path
	mkdir $Cert_Path
fi
rm -rf ~/.acme.sh/${CF_Domain}

切换到Let’s Encrypt并申请证书:

acme.sh --set-default-ca --server letsencrypt
export CF_Key="${CF_GlobalKey}"
export CF_Email="${CF_AccountEmail}"

acme.sh --issue --dns dns_cf -d ${CF_Domain} -d *.${CF_Domain} --log

将证书安装到前面指定的路径:

acme.sh --installcert -d ${CF_Domain} -d *.${CF_Domain} \
--ca-file ${Cert_Path}/ca.cer \
--cert-file ${Cert_Path}/${CF_Domain}.cer \
--key-file ${Cert_Path}/${CF_Domain}.key \
--fullchain-file ${Cert_Path}/fullchain.cer
0

评论区