第一章:环境准备与原理说明
1.1 证书自动化原理
- Let’s Encrypt 使用 ACME 协议验证域名所有权,支持 DNS TXT 记录验证
- 泛域名证书需通过
_acme-challenge.yourdomain.com
的 TXT 记录验证 - 自动化工具通过 DNS API 动态添加 / 删除验证记录
1.2 硬件要求
markdownmarkdown 复制 markdown 复制| 项目 | 最低配置 | 推荐配置 |
|--------------|----------------|------------------|
| CPU | 1 核 | 2 核 |
| 内存 | 512MB | 2GB |
| 磁盘 | 20GB HDD | 50GB SSD |
| 网络 | 1Mbps 带宽 | 10Mbps 带宽 |
1.3 软件依赖
bashbash 复制 bash 复制# Ubuntu/Debian
sudo apt update && sudo apt install -y \
curl \
cron \
socat \
openssl \
git \
nginx
# CentOS/RHEL
sudo yum install -y \
epel-release \
curl \
cronie \
socat \
openssl \
git \
nginx
第二章:工具链深度配置
2.1 acme.sh 高级安装
bashbash 复制 bash 复制# 指定安装路径(非 root 用户)curl https://get.acme.sh | sh -s email=admin@yourdomain.com \
--install \
--home /opt/acme.sh \
--accountemail "admin@yourdomain.com"
# 配置自动升级
echo 'acme.sh --upgrade --auto-upgrade' | sudo tee /etc/cron.daily/acme-upgrade
sudo chmod +x /etc/cron.daily/acme-upgrade
# 日志配置(保留 90 天)sudo mkdir /var/log/acme.sh
sudo ln -s /var/log/acme.sh ~/.acme.sh/acme.sh.log
2.2 多 CA 切换配置
bashbash 复制 bash 复制# Let's Encrypt(默认)acme.sh --set-default-ca --server letsencrypt
# ZeroSSL(需注册账号)acme.sh --register-account -m admin@yourdomain.com --server zerossl
acme.sh --set-default-ca --server zerossl
# Buypass(欧洲合规)acme.sh --set-default-ca --server buypass
第三章:全 DNS 服务商 API 对接
3.1 阿里云配置
bashbash 复制 markdown 复制# RAM 用户权限策略
{
"Version": "1",
"Statement": [{
"Action": [
"alidns:AddDomainRecord",
"alidns:DeleteDomainRecord",
"alidns:DescribeDomainRecords"
],
"Resource": "acs:alidns:*:*:domain/yourdomain.com",
"Effect": "Allow"
}]
}
# 环境变量配置
cat <<EOF >> ~/.bashrc
export Ali_Key="LTAI5txxxxxxxxxxxx"
export Ali_Secret="BGU3Sqxxxxxxxxxxxxxxxx"
EOF
3.2 Cloudflare 配置
iniini 复制 ini 复制# ~/.acme.sh/account.conf
export CF_Token="v1.xxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxx"
3.3 DNSPod 国际版
bashbash 复制 markdown 复制acme.sh --issue --dns dns_dpi \
--dnspod-dpi-key "xxxxxx" \
--dnspod-dpi-token "xxxxxx" \
-d yourdomain.com -d *.yourdomain.com
第四章:证书签发全流程
4.1 单次签发(调试模式)
bashbash 复制 bash 复制acme.sh --issue --dns dns_ali \
-d yourdomain.com \
-d *.yourdomain.com \
--debug 2 \
--log-level 3 \
--dnssleep 30 # DNS 生效等待时间
4.2 批量签发(多域名)
bashbash 复制 markdown 复制domains=(
"yourdomain.com"
"test.com"
"app.net"
)
for domain in "${domains[@]}"; do
acme.sh --issue --dns dns_cf \
-d "$domain" \
-d "*.$domain" \
--key-file /etc/ssl/$domain/key.pem \
--fullchain-file /etc/ssl/$domain/fullchain.pem
done
4.3 ECC 证书签发
bashbash 复制 bash 复制acme.sh --issue --dns dns_ali \
-d yourdomain.com \
--keylength ec-384 # 可选 ec-256/ec-384
第五章:Web 服务器集成
5.1 Nginx 高级配置
nginxnginx 复制 nginx 复制# /etc/nginx/conf.d/ssl.conf
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/yourdomain.com/ca.pem;
# 强制 HTTPS 跳转
server {
listen 80;
server_name yourdomain.com *.yourdomain.com;
return 301 https://$host$request_uri;
}
5.2 Apache 配置
apacheapache 复制 apache 复制# /etc/apache2/sites-available/ssl.conf
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/ssl/yourdomain.com/key.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder on
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
第六章:自动化运维体系
6.1 监控告警配置
bashbash 复制 bash 复制# 证书过期监控(Prometheus Exporter)acme.sh --monitor \
--prometheus /var/lib/prometheus/node_exporter/acme.prom \
--days 14 # 提前 14 天告警
# 邮件通知
acme.sh --set-notify \
--notify-hook mail \
--notify-level 2 \
--notify-smtp-server "smtp.yourdomain.com" \
--notify-smtp-user "alert@yourdomain.com" \
--notify-smtp-password "xxxxxx"
6.2 集群同步方案
bashbash 复制 bash 复制# 使用 Ansible 同步证书
acme.sh --install-cert -d yourdomain.com \
--reloadcmd "ansible all -m copy \
-a 'src=/etc/ssl/yourdomain.com/ dest=/etc/ssl/yourdomain.com/'"
# Kubernetes Secret 自动更新
acme.sh --install-cert -d yourdomain.com \
--reloadcmd "kubectl create secret tls yourdomain-tls \
--cert=/etc/ssl/yourdomain.com/fullchain.pem \
--key=/etc/ssl/yourdomain.com/key.pem --dry-run=client -o yaml | kubectl apply -f -"
第七章:安全加固指南
7.1 密钥保护策略
bashbash 复制 bash 复制# 密钥文件权限设置
sudo chmod 600 /etc/ssl/yourdomain.com/*.pem
sudo chown root:nginx /etc/ssl/yourdomain.com/
# 密钥加密存储
acme.sh --install-cert -d yourdomain.com \
--key-file /etc/ssl/yourdomain.com/key.pem.gpg \
--encrypt-key # 使用 GPG 加密存储
7.2 漏洞防护配置
nginxnginx 复制 nginx 复制# 禁用弱加密套件
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
# 启用 HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# OCSP Stapling 优化
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
第八章:全链路验证方案
8.1 证书链验证
bashbash 复制 bash 复制# 完整证书链检查
openssl verify -verify_chain -CAfile /etc/ssl/yourdomain.com/ca.pem \
/etc/ssl/yourdomain.com/fullchain.pem
# 在线验证
curl -sSf https://yourdomain.com > /dev/null
echo $? # 返回 0 表示 HTTPS 访问正常
8.2 自动续期测试
bashbash 复制 markdown 复制# 模拟续期(不修改实际证书)acme.sh --renew -d yourdomain.com --test
# 强制触发续期
acme.sh --renew -d yourdomain.com --force \
--log --syslog 6 # 记录到系统日志
第九章:企业级扩展方案
9.1 Certimate 私有化部署
yamlyaml 复制 yaml 复制# docker-compose.yml
version: '3'
services:
certimate:
image: ghcr.io/certimate/certimate:latest
ports:
- "8080:8080"
volumes:
- ./data:/data
environment:
- DB_URL=postgres://user:pass@db:5432/certimate
- REDIS_URL=redis://redis:6379
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: yoursecurepassword
redis:
image: redis:6
9.2 审计与合规
sqlsql 复制 sql 复制-- 证书签发记录表
CREATE TABLE certificates (
id SERIAL PRIMARY KEY,
domain VARCHAR(255) NOT NULL,
issuer VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
expires_at TIMESTAMP NOT NULL,
key_algorithm VARCHAR(20) NOT NULL
);
-- 操作日志表
CREATE TABLE audit_logs (
id SERIAL PRIMARY KEY,
action VARCHAR(50) NOT NULL,
operator VARCHAR(50) NOT NULL,
timestamp TIMESTAMP DEFAULT NOW());
附录 A:全平台客户端支持
系统平台 | 安装命令 | 注意事项 |
---|---|---|
Windows WSL2 | choco install acme.sh |
需开启 Linux 子系统 |
macOS | brew install acme.sh |
需安装 Homebrew |
Docker | docker run neilpang/acme.sh |
需挂载证书存储目录 |
Synology NAS | 套件中心安装 Acme Toolkit | 需开启 SSH 访问 |
附录 B:错误代码速查表
错误代码 | 含义 | 解决方案 |
---|---|---|
DNS-01 | DNS 验证失败 | 检查 API 权限 /TTL 设置 |
CONN-REF | 连接被拒绝 | 检查防火墙 /443 端口开放 |
RATE_LMT | 签发次数超限 | 切换 CA 或等待 7 天后重试 |
AUTH-ERR | 认证信息错误 | 重新配置 DNS API 密钥 |
CERT_EXP | 证书已过期 | 检查自动续期任务是否正常运行 |
点击下载 PDF 完整版:https://yourdomain.com/ssl-guide.pdf
在线验证工具:https://ssl-checker.yourdomain.com/
正文完
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。