首页 > 其他分享 >使用 acme.sh 生成免费 90 天的 SSL 泛域名证书

使用 acme.sh 生成免费 90 天的 SSL 泛域名证书

时间:2024-10-14 13:44:31浏览次数:6  
标签:10 14 acme site 2024 SSL sh CST

原文地址求你点进去看,给自己的博客加加热度

https://typecho.hanzhe.site/archives/13.html

acms.sh 是 Github 上开源的一款 SSL 证书申请工具,该工具安装配置完成后可帮我们申请免费 SSL 证书,并通过定时任务实现证书自动续期,理论上配置一次终生实用,官方有提供了中文文档可自行查阅,这里记录下我的操作流程,下列操作均为国内服务器 ubuntu-20.04 免梯完成

首先安装 acme.sh 脚本,根据官方文档可得知执行一行命令即可安装完成,该命令会远程下载 acme.sh 脚本并安装到当前用户的 home 目录下,同时为该脚本创建 alias 别名,所以安装完成后需要刷新一下环境

# 这部分忘了记录日志,仅提供命令参考

# 安装 acme.sh,注意这个邮箱换成自己的邮箱,也可以选择不提供邮箱
$ curl https://get.acme.sh | sh -s [email protected]

# 刷新环境,使别名生效
$ source ~/.bashrc

# 可通过查看版本号检查是否安装成功
$ acme.sh -v
https://github.com/acmesh-official/acme.sh
v3.1.0

接下来需要申请 SSL 证书,根据官方文档介绍申请证书有很多种方法,这里介绍我了解的三种方式:

  • HTTP 方式:检测本机安装的 WEB 服务器,自动在网站根目录下创建文件完成校验域名所有权,支持自动续签,如果没有 WEB 服务器且 80 端口属于空闲状态,脚本还会模拟出一个 WEB 服务器进行响应,由于我的 WEB 环境是 Docker 部署无法检测,且占用了 80 端口,该方案 PASS

  • 自动 DNS:通过域名服务商的 APIKEY 调用接口自动为域名创建解析记录完成校验域名所有权,支持自动续签,可惜我的域名来自西部数码,西部数码仅对代理开放 API 调用权限(想骂街),代理需要预充值(更想骂街),该方案 PASS

  • 手动 DNS:这是我正在使用的方案,在域名提供商手动创建解析记录,脚本校验域名所有权后颁发证书

介绍完成准备干活,按照官方文档的流程走,在命令行输入以下命令

# 我申请的是泛域名证书,所以用 *.hanzhe.site
$ acme.sh --issue --dns -d *.hanzhe.site --yes-I-know-dns-manual-mode-enough-go-ahead-please
[2024年 10月 14日 星期一 11:56:07 CST] Using CA: https://acme.zerossl.com/v2/DV90
[2024年 10月 14日 星期一 11:56:07 CST] Single domain='*.hanzhe.site'
[2024年 10月 14日 星期一 11:56:20 CST] Getting webroot for domain='*.hanzhe.site'
[2024年 10月 14日 星期一 11:56:20 CST] Add the following TXT record:
[2024年 10月 14日 星期一 11:56:20 CST] Domain: '_acme-challenge.hanzhe.site'
[2024年 10月 14日 星期一 11:56:20 CST] TXT value: 'G2kdxbaqrhza92njOTS5Rm9Tm_BLXsJLQAjm5luF63A'
[2024年 10月 14日 星期一 11:56:20 CST] Please make sure to prepend '_acme-challenge.' to your domain
[2024年 10月 14日 星期一 11:56:20 CST] so that the resulting subdomain is: _acme-challenge.hanzhe.site
[2024年 10月 14日 星期一 11:56:20 CST] Please add the TXT records to the domains, and re-run with --renew.
[2024年 10月 14日 星期一 11:56:20 CST] Please add '--debug' or '--log' to see more information.
[2024年 10月 14日 星期一 11:56:20 CST] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

根据日志可以看出申请的是 ZeroSSL 的证书,需要添加TXT类型的_acme-challenge解析记录,记录值在日志中也能看到,打开域名提供商管理地址,添加对应的解析记录

image

这里稍等片刻,确保解析生效后按照官方文档的流程继续走,校验域名所有权并生成证书

[2024年 10月 14日 星期一 12:07:37 CST] The domain '*.hanzhe.site' seems to already have an ECC cert, let's use it.
[2024年 10月 14日 星期一 12:07:37 CST] Renewing: '*.hanzhe.site'
[2024年 10月 14日 星期一 12:07:37 CST] Renewing using Le_API=https://acme.zerossl.com/v2/DV90
[2024年 10月 14日 星期一 12:07:40 CST] Using CA: https://acme.zerossl.com/v2/DV90
[2024年 10月 14日 星期一 12:07:40 CST] Single domain='*.hanzhe.site'
[2024年 10月 14日 星期一 12:07:41 CST] Verifying: *.hanzhe.site
[2024年 10月 14日 星期一 12:07:48 CST] Processing. The CA is processing your order, please wait. (1/30)
[2024年 10月 14日 星期一 12:07:53 CST] Success
[2024年 10月 14日 星期一 12:07:53 CST] Verification finished, beginning signing.
[2024年 10月 14日 星期一 12:07:53 CST] Let's finalize the order.
[2024年 10月 14日 星期一 12:07:53 CST] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/***/finalize'
[2024年 10月 14日 星期一 12:07:56 CST] Order status is 'processing', let's sleep and retry.
[2024年 10月 14日 星期一 12:07:56 CST] Sleeping for 15 seconds then retrying
[2024年 10月 14日 星期一 12:08:12 CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/***
[2024年 10月 14日 星期一 12:08:14 CST] Downloading cert.
[2024年 10月 14日 星期一 12:08:14 CST] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/***'
[2024年 10月 14日 星期一 12:08:17 CST] Cert success.
-----BEGIN CERTIFICATE-----
这里不能给你们看~
-----END CERTIFICATE-----
[2024年 10月 14日 星期一 12:08:17 CST] Your cert is in: /root/.acme.sh/*.hanzhe.site_ecc/*.hanzhe.site.cer
[2024年 10月 14日 星期一 12:08:17 CST] Your cert key is in: /root/.acme.sh/*.hanzhe.site_ecc/*.hanzhe.site.key
[2024年 10月 14日 星期一 12:08:17 CST] The intermediate CA cert is in: /root/.acme.sh/*.hanzhe.site_ecc/ca.cer
[2024年 10月 14日 星期一 12:08:17 CST] And the full-chain cert is in: /root/.acme.sh/*.hanzhe.site_ecc/fullchain.cer

如果域名所有权校验失败就等几分钟在执行一次,一切顺利的话 SSL 证书已经申请完成了,根据日志可知证书文件在用户目录下,不过官方不建议直接将文件复制过去,建议通过脚本提供的命令将证书安装到指定目录

# 将证书文件安装到指定目录
$ acme.sh --install-cert -d *.hanzhe.site \
    --key-file       /opt/docker/nginx/data/ssl/site.hanzhe/key.pem \
    --fullchain-file /opt/docker/nginx/data/ssl/site.hanzhe/cert.pem \

证书准备就绪,如果你的 WEB 服务器已经配置好了证书直接重启就行了,我这里使用的是 NGINX WEB 服务器:

server {
    listen       443 ssl;
    server_name  hanzhe.site www.hanzhe.site;
    ssl_certificate      /data/ssl/site.hanzhe/cert.pem;   # SSL证书配置
    ssl_certificate_key  /data/ssl/site.hanzhe/key.pem;    # SSL证书配置
    location / {
        root             /usr/share/nginx/www;
        index            index.html index.htm index.php;
    }
}

配置完成后使用docker compose restart ngixn重启 WEB 服务器即可

image

题外话:我的服务器环境不支持自动续期,发现颁发者为 ZeroSSL 之后本打算自己去申请来着,结果发现 ZeroSSL 的泛域名证书需要注册登录后购买高级订阅,是收费的,这个脚本可以免登录直接帮我申请到手,感谢感谢

标签:10,14,acme,site,2024,SSL,sh,CST
From: https://www.cnblogs.com/hanzhe/p/18463948

相关文章

  • Wx64ST:一款轻松可修改的C语言Shellcode模板
    原创Alpha_h4ckFreeBuf关于windows_x64_shellcode_templatewindows_x64_shellcode_template简称为Wx64ST,它是一款功能强大的Shellcode模板,该模板基于C语言编写,其简单、可扩展和易于修改等特性可以帮助广大安全研究人员轻松开发适用于Windowsx64的Shellcode。值得一提的是,......
  • CTFshow-web入门(1-20)-信息搜集
    信息搜集目录信息搜集web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20web1打开网页发现没有东西查看源代码发现flagflag:ctfshow{c530c49f-f86e-49bc-bc58-8a493b179adb}web2手动添加view-source:flag:ctfshow{7d18c83c......
  • Bash数组与字典使用
    需求编写bash脚本希望用到更加灵活的数据格式。数组使用index索引,直接调用返回第一个元素,支持-1检索,不存在的index返回空。举例:将十进制数转换为十六进制。declare-aHEX#可以省略HEX=(0123456789ABCDEF)echo${HEX[15]}#F字典使用key索引,直接调用......
  • openssl 1.1.1 安装
    https://download.csdn.net/blog/column/10942194/125836859root@VM-0-10-ubuntu:/home/ubuntu#wgethttps://www.openssl.org/source/openssl-1.1.1n.tar.gzopenssl:errorwhileloadingsharedlibraries:libssl.so.1.1在执行opensslversion出现如下错误:openssl:erro......
  • 【Shiro】5.多个Realm的使用和实现
    在Realm的使用中,可能使用多个Realm。比如,支持账号、密码登录;支持手机号验证码登录;支持微信登录等。1.创建多个自定义Realm创建多个自定义的Realm,分别处理不同类型的认证和授权逻辑。publicclassCustomRealm1extendsAuthorizingRealm{@OverrideprotectedAuth......
  • 如何在Windows中添加“在此处打开PowerShell”到右键菜单
    步骤2:打开注册表编辑器步骤3:导航到合适的注册表路径步骤4:创建新项步骤5:设置默认命令步骤6:完成并关闭步骤1:打开PowerShell按下 Win + X 键,然后选择“Windows PowerShell(管理员)”。在PowerShell窗口中输入以下命令并按下回车:powershellCopy$env:PAT......
  • Spark之RDD内核原理,MR的原理计算回顾,RDD的洗牌(shuffle)过程,RDD优化之避免shuffle过程
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,MR的shuffle回顾1,Map阶段:2,Shuffle阶段:3,Reduce阶段:二,spark的shuffle介绍 1,两种洗牌的方式2,spark的计算是要尽量避免进入shuffle计算三,并行度1,资源并行度 2,数据并行度一,MR的shuffle回顾1,M......
  • gmssl实践截图记录
             ......
  • openssl实验截图记录
                                    ......
  • 云计算(第二阶段):mysql后的shell
    第一章:变量前言什么是shellShell是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。shell的特点跨平台:大多数Shell都可以在不同的类UNIX系统上运行,包括Linux......