惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
博客园 - 【当耐特】
Cloudbric
Cloudbric
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
爱范儿
爱范儿
The Cloudflare Blog
腾讯CDC
Security Archives - TechRepublic
Security Archives - TechRepublic
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
C
Check Point Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
J
Java Code Geeks
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
About on SuperTechFans
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
A
Arctic Wolf
S
Secure Thoughts
P
Palo Alto Networks Blog
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
量子位
U
Unit 42
I
InfoQ
D
DataBreaches.Net
P
Privacy International News Feed
T
Troy Hunt's Blog
博客园 - 叶小钗
T
Threatpost
博客园 - Franky
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
www.infosecurity-magazine.com
www.infosecurity-magazine.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cisco Blogs

博客园 - 幸福的菜菜

ElementPlus Radio 实现双击取消选择的效果 Windows10 LTSC版本 无法访问网络中部分的共享文件夹 SqlSugar : date绑定到XX失败,可以试着换一个类型,或者使用ORM自定义类型实现 VisualStudio Debug模式突然变慢 Visual Stadio 编译提示 The BaseOutputPath/OutputPath property is not set for project ... winform绘图与前端canvas绘图效率对比 node-sass编译不通过, 提示 “checking for Python executable "python2" in the PATH” c# async await的使用方式及为啥要用它 winform 实现对usb热拔插的监听 Laravel The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths Wampserver 配置端口可访问服务 git credential for windows 总是弹出的问题 如何用B表的数据,更新A表的值 WampServer部署https 服务的过程 PHP 命名空间冲突解决方式 Windows下 Docker 简单部署 Django应用 C#实现后台格式化U盘的功能 Winform 实现断点续传的思路及代码 WAMPServer ServerName has syntax error 的问题(阿里云服务器上)
windows下使用ACME申请SSL证书的办法
幸福的菜菜 · 2026-02-03 · via 博客园 - 幸福的菜菜

1、安装git
先安装git 要用到 git bash 执行.sh

2、执行命令
curl https://get.acme.sh | sh

3、确认安装成功
~/.acme.sh/acme.sh --version


4、配置域名解析的地址
主要是location /.well-known/acme-challenge/ 的部分
这一步是为了测试该域名下的该文件是否能正确访问,因为acme会用同样的方式验证

server {
listen 80 default_server;
server_name _;

location /.well-known/acme-challenge/ {
alias f:/nginx/html/acme/;
try_files $uri =404;
}

location / {
return 444;
}
}

可以在 f:/nginx/html/acme/ 目录下创建测试文件 test.txt,并在文件内写点内容,确保能显示信息

5、测试通没有

浏览器访问:
http://example.com/.well-known/acme-challenge/test.txt

5、
通了后改配置,因为acme会自动生成.well-known/acme-challenge/

server {
listen 80 default_server;
server_name _;

location /.well-known/acme-challenge/ {
alias f:/nginx/html/acme/.well-known/acme-challenge/;
try_files $uri =404;
}
location / {
return 444;
}
}

6、在git bash下执行
~/.acme.sh/issue_nginx_cert_zh.sh example.com

如果失败,则将issue_nginx_cert_zh.sh拷贝至 acme的安装目录。然后执行

image


6.1 Windows执行
/c/Users/Administrator/.acme.sh/issue_nginx_cert_zh.sh example.com
这一步会向acme申请ssl的key,请耐心等待,过程后的图为:

image

7、定期执行
放进定时任务

schtasks /create /sc daily /tn "acme.sh" /tr "\"C:\Program Files\Git\bin\bash.exe\" -c '\"C:/Users/Administrator/.acme.sh/acme.sh\" --cron --home \"C:/Users/Administrator/.acme.sh\" > \"C:/Users/Administrator/.acme.sh/acme.log\" 2>&1'" /st 03:00 /rl HIGHEST

这一步本质是执行 acme.sh --cron
自动检查并续期即将过期的SSL证书

issue_nginx_cert_zh.sh 的代码如下

#!/bin/bash
# 用法:bash issue_nginx_cert.sh test.example.com

DOMAIN="$1"

# -----------------------------
# 中文输出函数(兼容 CMD / PowerShell / Git Bash)
# -----------------------------
echocp() {
    # 如果在 Git Bash,直接输出
    if [ -n "$MSYSTEM" ]; then
        printf '%s\n' "$1"
    else
        # CMD / PowerShell 下用 iconv 转 CP936
        printf '%s\n' "$1" | iconv -f UTF-8 -t CP936
    fi
}

if [ -z "$DOMAIN" ]; then
  echocp "请提供域名,例如: bash issue_nginx_cert.sh test.example.com"
  exit 1
fi

# -----------------------------
# 配置区(根据你环境修改)
# -----------------------------
ACME_HOME="$HOME/.acme.sh"              # acme.sh 安装目录
WEBROOT="C:/WebServer/nginx-1.28.1/html/acme"            # 用于验证的 webroot
NGINX_EXE="C:/WebServer/nginx-1.28.1/nginx.exe"          # nginx 可执行文件
NGINX_CONF="C:/WebServer/nginx-1.28.1/conf/nginx.conf"   # nginx 配置文件
CERT_DIR="C:/WebServer/nginx-1.28.1/conf/cert"           # 存放证书目录
LOG_FILE="$ACME_HOME/acme_ini.log"      # 日志文件



echocp "===== 开始处理证书:$DOMAIN ====="

# -----------------------------
# 1. 签发证书(RSA 2048,覆盖旧证书)
# -----------------------------
"$ACME_HOME/acme.sh" --issue \
  -d "$DOMAIN" -w "$WEBROOT" \
  --keylength 2048 \
  --force \
  --server https://acme-v02.api.letsencrypt.org/directory \
  2>&1 | tee -a "$LOG_FILE"

if [ $? -ne 0 ]; then
  echocp "证书申请失败,请查看日志:$LOG_FILE"
  exit 1
fi

echocp "证书申请成功:$DOMAIN"

# -----------------------------
# 2. 安装证书到 nginx
# -----------------------------
"$ACME_HOME/acme.sh" --install-cert -d "$DOMAIN" \
  --key-file "$CERT_DIR/$DOMAIN.key" \
  --fullchain-file "$CERT_DIR/${DOMAIN}_bundle.crt" \
  --reloadcmd "\"$NGINX_EXE\" -p C:/WebServer/nginx-1.28.1 -c conf/nginx.conf -s reload" \
  2>&1 | tee -a "$LOG_FILE"

if [ $? -ne 0 ]; then
  echocp "证书安装或 nginx reload 失败,请查看日志:$LOG_FILE"
  exit 1
fi

echocp "证书安装并重载 nginx 成功:$DOMAIN"
echocp "===== 处理完成 ====="