Linux
Kali 安装
Kali-WIFI密码(字典)
Armbian安装OMV(NAS)
NPS 内网穿透
CloudFlare
CloudFlare-免端口
CloudFlare-KV存储
API 使用
API-抓包信息使用
Linux-系统配置
Linux-更换源
Linux-一键更换源
Linux-权限
Linux-分区管理
Linux-网卡配置
Linux 端口转发
Linux 交换内存
Linux 进程优先级
Linux 共享打印机
Linux-自定义服务(支持Docker开机自启)
Linux-硬/软链接/挂载
Linux-系统时钟
Linux-清理命令记录
Linux-一键DD脚本
Linux-安装根证书
Linux-TheFuck(命令纠正)
Linux 服务器
Linux-面试鸭
Linux-Mall-Cook(商店可视化搭建)
Linux-Scratch
Linux-CasaOS(家庭云操作系统)
Linux-TiddlyWiki(非线性网页笔记)
Linux-拖拽式H5
Linux-鲁班H5
Linux-SSL证书续订
Linux-acme(SSL证书脚本)
SSL证书转换
SSL-httpsok
SSL-其它工具
Linux-LoveCards(表白墙)
Linux-游戏导航
Linux 常用命令
Linux-scp
Linux-打包/解压/压缩
Linux-SSH
Linux-portknocking(端口敲击)
Linux-获取当前公网IP
Linux-自动挂载盘
Linux-代理
Linux-nmap(局域网扫描)
Linux-jq(JSON处理)
Linux-DDNS(自制脚本)
Linux-shell传递参数
Linux-if(判断)
Linux-curl/wget
Linux-which(查看命令所在路径)
Linux-Maven
Linux-ncdu(清理日志)
Linux-共享
Linux-screen(终端切换)
Linux-Macchanger(MAC修改)
Linux-iptables(包过滤防火墙系统)
Linux-祸害人脚本
Linux-模拟网络延迟环境
Linux-Git
Linux-apt(安装软件)
Linux-crontab(定时任务)
Linux-nano/vi/vim 编辑器
Linux 环境安装
Linux 安装 Node.js
Node.js-创建通用执行
Linux 安装 Java
Linux 安装 Go
域名注册
MariaDB-相关操作
未测试开源项目
SQL 学习
SQL-常用指令
Ansible(自动化运维)
Zabbix(运维监控)
网络设备概述
备份概述
雷池WAF
Linux-新旧服务器同步rpm软件包
本文档使用 MrDoc 发布
-
+
首页
Linux-acme(SSL证书脚本)
[acme](https://github.com/acmesh-official/acme.sh) 是自动颁发和续订免费证书的 shell 脚本 相关链接: --- - Wiki:https://github.com/acmesh-official/acme.sh/wiki - GitHub:https://github.com/acmesh-official/acme.sh - Docker:https://hub.docker.com/r/neilpang/acme.sh - Docker使用教程:https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker - DNS凭证使用:https://go-acme.github.io/lego/dns/ - CloudFlare API:https://dash.cloudflare.com/profile/api-tokens - Let's Encrypt - 重复证书限制:https://letsencrypt.org/docs/duplicate-certificate-limit/ - 暂存环境(测试):https://letsencrypt.org/docs/staging-environment/ 这里主要举例 CloudFlare 方式 ```bash # 拉取最新脚本 git clone https://git.918178.xyz/https://github.com/acmesh-official/acme.sh.git && cd acme.sh # 拉取最新并进入项目目录 # 安装 ACME ./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "<你的邮箱>" # 修改默认 CA 为 letsencrypt,默认为 zerossl ./acme.sh --set-default-ca --server letsencrypt # 对于频繁测试的,可以使用 letsencrypt 的暂存环境 # acme.sh --set-default-ca --server https://acme-staging-v02.api.letsencrypt.org/directory # --------------------- CloudFlare 认证(三选一) --------------------- # 使用 邮箱 + CloudFlare API 令牌 方式认证 export CF_Email="ai773203918@qq.com" # CloudFlare API 令牌 export CF_Token="xxxxxxxxxx" # CloudFlare API 令牌 # # 使用 账户 ID + CloudFlare API 令牌 方式认证 # export CF_Account_ID="xxxxxxxxxxxxx" # 帐户 ID # export CF_Token="xxxxxxxxxx" # CloudFlare API 令牌 # export CF_Zone_ID="xxxxxxxxxxxxx" # 可选,区域 ID,单区域时需要 # # 使用 Global API Key(全局API密钥) 方式认证,不推荐比较危险 # export CF_Email="ai773203918@qq.com" # CloudFlare API 令牌 # export CF_Key="xxxxx" # Global API Key(全局API密钥) # 注册账户 ./acme.sh --register-account -m ai773203918@qq.com # 使用前先注册账户 # 颁发证书,在颁发前需要配置 DNS供应商认证(上方👆) ./acme.sh --issue --dns <dns_cf,DNS供应商> -d "<域名A,域名B,...>" # 需要强制则带上 --force # 注意一条命令无法同时颁发具有包含关系的多个域名(如 *.918178.xyz,nas.918178.xyz 就是包含关系) # 可以分成两条进行创建(*.918178.xyz,918178.xyz 并不是包含关系,但也不可能一起) # 证书续订(默认全部证书一起续订) /usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/ # 指定目录 /usr/local/share/acme.sh/acme.sh --cron # 不指定目录 ## 定时续订 crontab -e # 编辑定时任务 0 0 1 * * /usr/local/share/acme.sh/acme.sh --cron # 每月1号00:00执行 crontab -l # 查看已有任务 # 修复环境 /usr/local/share/acme.sh/acme.sh --force --upgrade --nocron --home /usr/local/share/acme.sh # 更新 acme ./acme.sh --upgrade # 更新 ./acme.sh --upgrade --auto-upgrade # 自动更新 ./acme.sh --upgrade --auto-upgrade 0 # 禁用更新 # 删除证书 rm -rf /usr/local/share/acme.sh/your_domain* # 删除证书相关文件(一步解决) ./acme.sh --remove -d 'your_domain' # 删除证书 ./acme.sh --revoke -d 'your_domain' # 撤销证书 # 导出证书文件,直接复制出来 cp /usr/local/share/acme.sh/\*.918178.xyz/* /volume1/nas/domain # 带通配符的需要加 \ 来转义 * # 在 nginx.conf 中调用无需转义符 ``` ### 常见问题 ```bash # CA 为 zerossl,需要登录 zerossl 账户才可用,可更换 letsencrypt 解决 [Thu Jan 4 02:47:03 PM CST 2024] Using CA: https://acme.zerossl.com/v2/DV90 [Thu Jan 4 02:47:03 PM CST 2024] Single domain='nas.918178.xyz' [Thu Jan 4 02:47:03 PM CST 2024] Getting domain auth token for each domain [Thu Jan 4 02:47:14 PM CST 2024] Getting webroot for domain='nas.918178.xyz' [Thu Jan 4 02:47:14 PM CST 2024] Error, can not get domain token "type":"dns-01","url":"https://acme.zerossl.com/v2/DV90/chall/6BFguLgB69Z-_yDyihGdKQ","status":"invalid","error":{ [Thu Jan 4 02:47:14 PM CST 2024] Please add '--debug' or '--log' to check more details. [Thu Jan 4 02:47:14 PM CST 2024] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh # 同时申请的多个域为包含关系,可以分开单独申请 [Thu Jan 4 03:06:45 PM CST 2024] Using CA: https://acme-v02.api.letsencrypt.org/directory [Thu Jan 4 03:06:45 PM CST 2024] Multi domain='DNS:*.918178.xyz,DNS:nas.918178.xyz' [Thu Jan 4 03:06:45 PM CST 2024] Getting domain auth token for each domain [Thu Jan 4 03:06:48 PM CST 2024] Create new order error. Le_OrderFinalize not found. { "type": "urn:ietf:params:acme:error:malformed", "detail": "Error creating new order :: Domain name \"nas.918178.xyz\" is redundant with a wildcard domain in the same request. Remove one or the other from the certificate request.", "status": 400 } [Thu Jan 4 03:06:48 PM CST 2024] Please add '--debug' or '--log' to check more details. [Thu Jan 4 03:06:48 PM CST 2024] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh # 证书信任问题 error code: 60 ## `acme.sh` 中 `curl --silent` 修改为 `curl -k --silent` 忽略证书 ## 也可执行代码加上 `--insecure` 忽略证书 ``` ## 部署到 群晖 ```bash # --------------------- 群晖部署配置 --------------------- # 群晖登录相关(需有配置证书权限) export SYNO_Username='Admin_Username' # 群晖用户名 export SYNO_Password='Admin_Password!123' # 群晖密码 # export SYNO_TOTP_SECRET='' # 群晖OTP # export SYNO_Scheme='http' # 群晖访问协议(默认http/https) export SYNO_Port='2333' # 群晖访问端口(默认5000),需和协议端口对应 # 群晖证书相关 export SYNO_Certificate="" # 指定替换的证书,默认证书则保持为空 # export SYNO_Create=1 # 如果指定其他证书,启用这个可以在证书不存在时创建证书 # 启用了双因素身份验证(2FA),需要额外配置这个 # 参考链接:https://github.com/acmesh-official/acme.sh/wiki/deployhooks#20-deploy-the-cert-into-synology-dsm # export export SYNO_DID='YOUR VALUE' # export SYNO_USE_TEMP_ADMIN=1 # 使用临时用户或现有管理员用户进行部署(常规不行可以使用) # --------------------- 部署 --------------------- # 部署证书 ./acme.sh --deploy -d "<域名>" --deploy-hook synology_dsm # 群晖部署(需额外配置,上方👆) # 如果启用 OTP,部署时需要验证,更新证书不需要 # 更新证书 # ./acme.sh --cron # 正常证书续订就行,会自动更新到群晖证书 ``` ## 部署到 PVE PVE 是支持 ACME 的,直接 [Web UI 上部署](/doc/367/) 就行,这个是备用方案 ```bash # 部署证书,部署完成后执行重启 pveproxy ./acme.sh --debug --installcert -d <域名> --keypath /etc/pve/local/pveproxy-ssl.key --fullchainpath /etc/pve/local/pveproxy-ssl.pem --reloadcmd "systemctl restart pveproxy" ``` **相关教程:** [将默认 CA 更改为 ZeroSSL](https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL) [ZeroSSL.com CA](https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA)
造物者W
2024年11月6日 22:42
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码