本文目录导读:

- 一键生成「自签名证书」(适合内网、开发、测试)
- 自动申请「Let's Encrypt 免费证书」(公网可信)
- 使用
acme.sh脚本(更轻量、支持更多 DNS API) - 生成「泛域名证书」的实用脚本
- 总结:选哪个脚本?
是的,有很多实用脚本可以自动生成SSL证书,尤其适合以下场景:
- 内网开发/测试环境(不需要公开 CA 签名)
- 个人或小团队服务(使用 Let's Encrypt 等免费 CA)
- 自动化部署流水线(CI/CD 中自动续签)
根据你的需求(是需要公开可信的证书还是自签名证书),推荐以下几种实用方式:
一键生成「自签名证书」(适合内网、开发、测试)
自签名证书浏览器会提示不安全,但用于 API 加密、内部服务或测试环境完全足够。
脚本示例(Shell):gen-self-signed.sh
#!/bin/bash
# 配置文件域名和有效期
DOMAIN="${1:-localhost}"
DAYS="${2:-3650}"
KEY_FILE="${DOMAIN}.key"
CRT_FILE="${DOMAIN}.crt"
echo ">>> 生成自签名证书 for $DOMAIN (有效期 $DAYS 天)"
# 1. 生成私钥
openssl genrsa -out "$KEY_FILE" 2048
# 2. 生成证书签名请求 (CSR) - 自动填充常见字段
openssl req -new -key "$KEY_FILE" -out "${DOMAIN}.csr" \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Dev/OU=IT/CN=$DOMAIN"
# 3. 生成自签名证书(同时指定 SAN 扩展,Chrome/Firefox 不再报 NET::ERR_CERT_COMMON_NAME_INVALID)
openssl x509 -req -days "$DAYS" -in "${DOMAIN}.csr" -signkey "$KEY_FILE" -out "$CRT_FILE" \
-extfile <(printf "subjectAltName=DNS:$DOMAIN,DNS:localhost,IP:127.0.0.1")
# 清理临时文件
rm -f "${DOMAIN}.csr"
echo "完成:"
echo " 私钥: $KEY_FILE"
echo " 证书: $CRT_FILE"
用法:
chmod +x gen-self-signed.sh ./gen-self-signed.sh mydomain.local 365
自动申请「Let's Encrypt 免费证书」(公网可信)
如果你有一个公网域名,并能控制 DNS 或 Web 服务器,可以用 Certbot 一键申请并自动续签。
脚本示例:get-letsencrypt.sh
#!/bin/bash
DOMAIN="$1"
EMAIL="$2"
if [ -z "$DOMAIN" ] || [ -z "$EMAIL" ]; then
echo "用法: $0 <域名> <邮箱>"
exit 1
fi
echo ">>> 正在为 $DOMAIN 申请 Let's Encrypt 证书..."
# 安装 certbot(如果尚未安装)
which certbot > /dev/null 2>&1 || sudo apt install -y certbot
# 使用 standalone 模式(需要临时占用 80 端口)
sudo certbot certonly --standalone \
--non-interactive \
--agree-tos \
--email "$EMAIL" \
-d "$DOMAIN"
echo "证书位置:"
echo " /etc/letsencrypt/live/$DOMAIN/fullchain.pem"
echo " /etc/letsencrypt/live/$DOMAIN/privkey.pem"
自动化续签(crontab 每日执行):
0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx
使用 acme.sh 脚本(更轻量、支持更多 DNS API)
acme.sh 是纯 Shell 脚本,也是 Let's Encrypt 的客户端,功能非常强大。
# 安装
curl https://get.acme.sh | sh
# 申请证书(自动 DNS 验证,需设置 API 密钥)
alias acme.sh=~/.acme.sh/acme.sh
acme.sh --issue -d example.com --dns dns_cf # 以 Cloudflare 为例
# 安装到 Nginx(自动复制并重启)
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "systemctl reload nginx"
生成「泛域名证书」的实用脚本
如果你想用一个证书覆盖所有子域(*.example.com),可以用以下方式:
自签名泛域证书
openssl req -newkey rsa:2048 -nodes -keyout wildcard.key \
-x509 -days 3650 -out wildcard.crt \
-subj "/CN=*.example.com" \
-addext "subjectAltName = DNS:*.example.com, DNS:example.com"
Let's Encrypt 泛域证书(需 DNS-01 验证)
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
选哪个脚本?
| 场景 | 推荐方案 | 证书类型 |
|---|---|---|
| 内网开发/测试 | 自签名脚本 | 自签名 |
| 个人博客/公网服务 | Certbot 或 acme.sh | 公开可信 |
| 自动化 CI/CD | acme.sh(纯 Shell,无依赖) | 公开可信 |
| 微服务/容器内部 | mkcert 或 自签名脚本 | 自签名(可被本地信任) |
另外推荐一个很好的工具:mkcert
# 安装 mkcert brew install mkcert # macOS sudo apt install mkcert # Linux(需添加仓库) # 生成并信任本地证书 mkcert -install mkcert localhost 127.0.0.1 ::1 # 输出:localhost+2.pem, localhost+2-key.pem (浏览器直接信任)
这些脚本和工具都能让你几分钟内自动化生成SSL证书,从而告别手动交互。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播