使用Certimate申请Let's Encrypt免费SSL证书完整指南
使用Certimate申请Let’s Encrypt免费SSL证书完整指南
📋 目录
- 1. Certimate简介
- 2. 免费SSL证书服务商对比
- 3. 快速开始
- 4. DNS提供商配置
- 5. 申请免费SSL证书
- 6. 证书部署
- 7. 多服务器证书同步
- 8. 故障排除
- 9. 最佳实践
- 10. 总结
- 相关链接
1. Certimate简介
Certimate是一款开源的SSL证书管理工具,专门用于自动申请、部署和续期Let’s Encrypt等免费SSL证书。通过Certimate,您可以轻松管理多个域名的SSL证书,实现完全自动化的证书生命周期管理。
核心特性
- 完全自动化:从证书申请到部署的全流程自动化
- 多种证书类型:支持单域名、多域名、泛域名证书
- 多种验证方式:支持DNS-01和HTTP-01两种质询方式
- 广泛兼容:支持40+域名托管商,包括阿里云、腾讯云、Cloudflare等
- 灵活部署:支持100+部署目标,如CDN、负载均衡、Kubernetes等
- 自动续期:证书到期前自动续期,无需人工干预
2. 免费SSL证书服务商对比
主流免费SSL证书颁发机构
服务商 | 证书有效期 | 域名类型支持 | 申请限制 | 特点 | 推荐指数 |
---|---|---|---|---|---|
Let’s Encrypt | 90天 | 单域名、多域名、泛域名 | 每周50个证书/域名 | 通过Certimate自动申请,完全免费,支持自动续期 | ⭐⭐⭐⭐⭐ |
ZeroSSL | 90天 | 单域名、多域名、泛域名 | 需要注册账号,每月3个免费证书 | 企业级支持,界面友好 |
⭐⭐⭐⭐ |
阿里云SSL | 90天 | 单域名 | 每年20张免费证书 | DigiCert品牌,国内访问快 |
⭐⭐⭐⭐ |
腾讯云SSL | 90天 | 单域名 | 每年20张免费证书 | TrustAsia品牌,一键部署 |
⭐⭐⭐⭐ |
华为云SSL | 365天 | 单域名 | 每年20张免费证书 | DigiCert品牌,有效期1年 |
⭐⭐⭐⭐⭐ |
百度云SSL | 365天 | 单域名 | 需要注册,限制较多 | TrustAsia品牌,有效期1年 |
⭐⭐⭐ |
Google Trust Services | 90天 | 单域名、多域名、泛域名 | 无明确限制 | 谷歌背书,兼容性好 |
⭐⭐⭐⭐ |
Buypass Go SSL | 180天 | 单域名、多域名、泛域名 | 每个域名5个证书/月 | 挪威公司,有效期更长 |
⭐⭐⭐ |
SSL.com | 90天 | 单域名 | 需要注册,限制较多 | 提供多种付费选项 | ⭐⭐ |
推荐选择
国外用户推荐: Let’s Encrypt
- 完全免费,无需注册
- 生态最完善,支持最广泛
- Certimate默认推荐
国内用户推荐: 华为云SSL证书
- 有效期1年,续期频率低
- 国内访问速度快
- DigiCert权威品牌
企业用户推荐: 阿里云SSL证书 或 腾讯云SSL证书
- 与云服务深度集成
- 一键部署到CDN、负载均衡等
- 本土化技术支持
开发测试推荐: Let’s Encrypt 或 ZeroSSL
- 支持泛域名证书
- 自动化程度高
- 适合频繁测试场景
Google Cloud用户推荐: Google Trust Services
- 与GCP服务无缝集成
- 性能和稳定性有保障
3. 快速开始
3.1 安装Certimate
方式一:二进制部署(推荐)
- 从GitHub Releases下载最新版本
- 解压并运行:
1
2
3
4
5
6# 下载并解压
wget https://github.com/certimate-go/certimate/releases/latest/download/certimate-linux-amd64.tar.gz
tar -xzf certimate-linux-amd64.tar.gz
# 运行服务
./certimate serve - 浏览器访问 http://127.0.0.1:8090
- 使用默认账号登录:
- 账号:admin@certimate.fun
- 密码:1234567890
方式二:Docker部署
1 | # 使用Docker运行 |
3.2 系统要求
最低要求:
- 操作系统:Linux、Windows、macOS
- 内存:512MB RAM
- 存储:100MB 可用空间
- 网络:能够访问互联网
网络访问要求:
- ACME服务器端点(各证书颁发机构)
- 阿里云API端点:
https://alidns.aliyuncs.com
- 如使用HTTP-01验证:需开放80端口
4. DNS提供商配置
Certimate支持40+种DNS提供商,用于DNS-01验证方式申请Let’s Encrypt证书。以下以阿里云DNS为例说明配置过程:
4.1 阿里云DNS配置
4.1.1 创建RAM用户
为安全起见,建议创建专用的RAM用户:
- 登录阿里云控制台
- 进入”访问控制(RAM)”服务
- 创建新的RAM用户
- 生成AccessKey ID和AccessKey Secret
4.1.2 配置权限策略
为RAM用户分配DNS管理权限:
使用系统策略(推荐):
AliyunDNSFullAccess
或使用自定义策略:
1 | { |
4.2 其他DNS提供商
Certimate还支持以下主流DNS提供商:
国外提供商:
- Cloudflare:全球最大的DNS服务商,免费且功能强大
- AWS Route 53:亚马逊云DNS服务,企业级可靠性
- Google Cloud DNS:谷歌云DNS服务,性能优异
- DigitalOcean:简单易用,适合个人开发者
国内提供商:
- 腾讯云DNS:与腾讯云服务深度集成
- 华为云DNS:企业级DNS解析服务
- 百度云DNS:百度智能云DNS服务
配置要点:
- 确保API密钥具有DNS记录管理权限
- 建议使用子账号而非主账号密钥
- 定期轮换API密钥以提高安全性
5. 申请免费SSL证书
5.1 Let’s Encrypt 证书配置
5.1.1 基础配置
Let’s Encrypt是全球最受信任的免费SSL证书颁发机构,Certimate已内置完整的Let’s Encrypt支持,用户只需简单配置即可自动申请和续期证书。
快速配置步骤:
- 选择证书颁发机构:在Certimate中选择”Let’s Encrypt”
- 填写邮箱地址:用于接收重要通知(如证书即将到期)
- 选择验证方式:DNS验证(推荐)或HTTP验证
- 配置域名:单域名、多域名或通配符域名
推荐配置:
1 | # 生产环境推荐配置 |
5.1.2 域名验证方式
Certimate支持两种Let’s Encrypt域名验证方式,根据您的需求选择合适的验证方法:
DNS-01验证(推荐):
- ✅ 支持通配符证书(*.example.com)
- ✅ 无需开放80/443端口
- ✅ 适合内网服务器
- ✅ 安全性更高
配置步骤:
- 选择验证方式:DNS-01
- 选择DNS提供商:如阿里云DNS、Cloudflare等
- 填入DNS API密钥
- Certimate自动添加TXT记录完成验证
HTTP-01验证:
- ✅ 配置简单,无需DNS API
- ✅ 适合单域名证书
- ❌ 不支持通配符证书
- ❌ 需要开放80端口
配置步骤:
- 选择验证方式:HTTP-01
- 确保域名解析到服务器
- 确保80端口可访问
- Certimate自动在网站根目录创建验证文件
5.1.3 证书类型选择
根据您的域名需求,选择合适的证书类型:
单域名证书:
- 适用场景:单个域名(如 example.com)
- 配置示例:
example.com
- 推荐用途:简单网站、API服务
多域名证书(SAN):
- 适用场景:多个不同域名
- 配置示例:
1
2
3
4
5主域名:example.com
附加域名:
- www.example.com
- api.example.com
- admin.example.com - 推荐用途:多服务架构、微服务
通配符证书(推荐):
- 适用场景:所有子域名(如 *.example.com)
- 配置示例:
1
2通配符域名:*.example.com
根域名:example.com - 验证要求:必须使用DNS-01验证
- 推荐用途:SaaS平台、多租户应用
5.1.4 最佳实践建议
证书密钥类型选择:
- 🔧 RSA 2048位:兼容性最佳,推荐生产环境使用
- 🔧 ECDSA P-256:性能更优,文件更小,现代应用推荐
自动续期配置:
- ⏰ 续期时间:证书到期前30天自动续期
- 🔄 检查频率:每天检查一次证书状态
- 📧 通知设置:续期成功/失败邮件通知
安全注意事项:
- 🔐 定期备份证书私钥
- 🔐 使用强密码保护Certimate管理界面
- 🔐 限制API密钥权限范围
- 🔐 启用操作日志审计
性能优化建议:
- 📈 使用CDN加速证书分发
- 📈 启用OCSP Stapling提升握手速度
- 📈 配置HTTP/2提升传输效率
备用链:
- 根证书:DST Root CA X3(已过期,但某些旧设备仍需要)
- 使用场景:需要支持Android 7.1.1以下设备
1 | certificate_chain: |
5.2 配置DNS提供商
在Certimate中配置DNS提供商,用于DNS-01验证方式:
5.2.1 添加DNS提供商
- 登录Certimate管理界面
- 进入”DNS提供商”页面
- 点击”添加DNS提供商”
- 根据您的DNS服务商选择对应类型
5.2.2 常用DNS提供商配置
阿里云DNS配置:
- 类型:选择”阿里云”
- 名称:阿里云DNS(自定义名称)
- AccessKey ID:您的AccessKey ID
- AccessKey Secret:您的AccessKey Secret
- 区域:cn-hangzhou(可选)
Cloudflare配置:
- 类型:选择”Cloudflare”
- 名称:Cloudflare DNS
- API Token:您的Cloudflare API Token
- Zone ID:域名的Zone ID(可选)
腾讯云DNS配置:
- 类型:选择”腾讯云”
- 名称:腾讯云DNS
- SecretId:您的SecretId
- SecretKey:您的SecretKey
- 区域:ap-beijing(可选)
AWS Route 53配置:
- 类型:选择”AWS Route 53”
- 名称:AWS DNS
- Access Key ID:您的AWS Access Key
- Secret Access Key:您的AWS Secret Key
- 区域:us-east-1(根据实际情况选择)
5.3 添加域名和申请证书
5.3.1 配置域名证书
- 进入”域名”管理页面
- 点击”添加域名”
- 填入域名信息:
- 域名:example.com(您的实际域名)
- DNS提供商:选择之前配置的DNS提供商
- 证书类型:选择需要的类型(单域名/多域名/泛域名)
- 证书颁发机构:推荐选择Let’s Encrypt
- 验证方式:推荐选择DNS-01验证
5.3.2 Let’s Encrypt配置要点
证书颁发机构选择:
- Let’s Encrypt:完全免费,90天有效期,支持自动续期
- ZeroSSL:免费版每月3个证书,需要注册账号
- Buypass:180天有效期,挪威公司
验证方式选择:
- DNS-01验证:支持泛域名,无需开放端口,推荐使用
- HTTP-01验证:仅支持单域名,需要开放80端口
域名格式示例:
- 单域名:
example.com
- 多域名:
example.com,www.example.com,api.example.com
- 泛域名:
*.example.com
(注意:泛域名只能使用DNS-01验证)
5.4 证书类型选择
单域名证书:
- 适用于:单个域名(如 example.com)
- 配置:直接输入域名即可
多域名证书(SAN):
- 适用于:多个不同域名
- 配置:在域名字段中用逗号分隔多个域名
- 示例:example.com,www.example.com,api.example.com
泛域名证书:
- 适用于:一个域名的所有子域名
- 配置:使用通配符格式
- 示例:*.example.com
- 注意:只能使用DNS-01验证方式
5.5 验证方式选择
DNS-01验证(推荐):
- 优势:支持泛域名证书,无需开放端口
- 原理:在DNS中添加TXT记录验证域名所有权
- 适用场景:所有场景,特别是泛域名证书
HTTP-01验证:
- 优势:验证过程简单直观
- 原理:在网站根目录放置验证文件
- 限制:不支持泛域名证书,需要开放80端口
- 适用场景:单域名证书,且服务器可直接访问
6. 证书部署
Certimate支持将Let’s Encrypt证书自动部署到100+种目标平台,包括云服务、CDN、负载均衡器、Web服务器等。
6.1 云服务部署
6.1.1 阿里云服务部署
阿里云CDN:
- 进入”部署目标”页面
- 点击”添加部署目标”
- 选择”阿里云CDN”并配置:
- 名称:生产环境CDN
- AccessKey ID:具有CDN管理权限的AccessKey
- AccessKey Secret:对应的Secret
- 域名:CDN加速域名
阿里云SLB(负载均衡):
- 选择”阿里云SLB”类型
- 填入SLB实例ID和监听端口
- 证书将自动部署到HTTPS监听器
6.1.2 腾讯云服务部署
腾讯云CDN:
- 类型:选择”腾讯云CDN”
- SecretId/SecretKey:腾讯云API密钥
- 域名:CDN加速域名
腾讯云CLB(负载均衡):
- 类型:选择”腾讯云CLB”
- 实例ID:CLB实例标识
- 监听器ID:HTTPS监听器标识
6.1.3 AWS服务部署
AWS CloudFront:
- 类型:选择”AWS CloudFront”
- Access Key/Secret Key:AWS API密钥
- Distribution ID:CloudFront分发ID
AWS ALB/ELB:
- 类型:选择”AWS Load Balancer”
- 负载均衡器ARN:目标负载均衡器
- 监听器端口:HTTPS监听端口
6.2 Web服务器部署
6.2.1 SSH服务器部署
通过SSH将证书部署到Web服务器:
- 选择”SSH服务器”类型
- 配置服务器连接信息:
- 服务器地址:192.168.1.100
- SSH端口:22
- 用户名:root 或具有sudo权限的用户
- 认证方式:密码或SSH密钥
- 设置证书存储路径和重启命令
Nginx服务器配置:
1 | # 证书文件路径 |
Apache服务器配置:
1 | # 证书文件路径 |
Caddy服务器配置:
1 | # Caddy自动管理证书,通常只需重启 |
6.2.2 容器化部署
Docker容器部署:
1 | # 挂载证书目录到容器 |
Kubernetes部署:
1 | # 创建Secret资源 |
6.3 其他部署目标
6.3.1 反向代理
Cloudflare:
- 自动上传证书到Cloudflare
- 支持通配符证书
- 全球CDN加速
Nginx Proxy Manager:
- 可视化反向代理管理
- 自动SSL证书管理
- 支持Docker部署
6.3.2 存储服务
本地文件系统:
- 证书保存到指定目录
- 支持自定义文件名格式
- 可配置文件权限
对象存储:
- 阿里云OSS
- 腾讯云COS
- AWS S3
- 七牛云存储
7. 多服务器证书同步
当您有多个服务器但只使用一个域名时,需要将SSL证书同步到所有服务器。Certimate提供了几种解决方案:
7.1 单点管理方案(推荐)
部署架构:
- 在一台主服务器上部署Certimate
- 其他服务器通过证书同步获取证书
- 避免重复申请,减少CA服务器压力
实施步骤:
选择主服务器
1
2
3
4# 在主服务器上安装Certimate
wget https://github.com/certimate-go/certimate/releases/latest/download/certimate-linux-amd64.tar.gz
tar -xzf certimate-linux-amd64.tar.gz
./certimate配置证书申请
- 在主服务器上配置域名和DNS提供商
- 申请证书并验证成功
设置证书同步
方案一:SSH自动同步
1
2
3
4
5
6
7
8
9
10
11
12# 在Certimate中配置多个SSH部署目标
部署类型:SSH服务器
服务器1:192.168.1.10
服务器2:192.168.1.11
服务器3:192.168.1.12
# 证书路径
证书文件:/etc/nginx/ssl/domain.crt
私钥文件:/etc/nginx/ssl/domain.key
# 部署后命令
重启命令:sudo systemctl reload nginx方案二:共享存储同步
1
2
3
4
5
6
7# 使用NFS或其他共享存储
# 主服务器导出证书目录
echo "/etc/ssl/certs *(ro,sync)" >> /etc/exports
systemctl restart nfs-server
# 其他服务器挂载共享目录
mount -t nfs 主服务器IP:/etc/ssl/certs /etc/ssl/certs
7.2 证书分发脚本
自动分发脚本示例:
1 |
|
7.3 负载均衡器方案
使用阿里云SLB:
1 | # 配置SLB HTTPS监听 |
优势:
- SSL终结在负载均衡器
- 后端服务器无需配置证书
- 统一管理,简化运维
7.4 容器化部署同步
Docker Swarm示例:
1 | # docker-compose.yml |
Kubernetes示例:
1 | # 使用Secret存储证书 |
7.5 监控和告警
证书同步监控脚本:
1 |
|
7.6 注意事项
避免重复申请:
- 只在一台服务器上运行Certimate
- 其他服务器通过同步获取证书
- 避免触发CA的速率限制
安全考虑:
- 使用SSH密钥认证而非密码
- 限制证书文件的访问权限(600或644)
- 定期轮换SSH密钥
高可用性:
- 配置主备Certimate实例
- 使用共享存储保存配置和证书
- 设置监控和自动故障转移
8. 自动续期
Certimate会自动处理证书续期:
- 检查频率:每天检查一次证书状态
- 续期时机:证书过期前10天开始续期
- 自动部署:续期成功后自动部署到配置的目标
- 失败重试:续期失败会自动重试,最多3次
续期状态监控
在Certimate界面中可以查看:
- 证书剩余有效期
- 最近续期时间
- 续期状态(成功/失败)
- 下次续期时间
9. 常见问题
9.1 证书申请失败
DNS验证失败:
- 检查DNS提供商配置是否正确
- 确认AccessKey权限是否充足
- 验证域名解析是否正常
速率限制:
- Let’s Encrypt:每周每域名最多50个证书
- 解决方案:等待限制重置或使用其他证书颁发机构
网络连接问题:
- 确保服务器能访问ACME服务器
- 检查防火墙设置
- 验证系统时间是否正确
9.2 证书部署失败
权限不足:
- 检查部署目标的访问权限
- 确认AccessKey具有相应服务的管理权限
网络连接:
- 验证到部署目标的网络连接
- 检查SSH连接配置(如果使用SSH部署)
9.3 自动续期失败
常见原因:
- DNS配置变更
- AccessKey过期或权限变更
- 网络连接问题
- 服务器资源不足
解决方案:
- 检查并更新DNS配置
- 验证AccessKey有效性
- 查看系统日志定位具体问题
10. 最佳实践
10.1 安全建议
- 使用RAM用户:不要使用主账号的AccessKey
- 最小权限原则:只授予必要的权限
- 定期轮换:定期更换AccessKey
- 监控访问:启用API访问日志监控
10.2 性能优化
- 选择合适的证书颁发机构:根据地理位置选择访问速度最快的
- 合理规划证书:使用泛域名证书减少证书数量
- 监控续期状态:及时发现和解决续期问题
10.3 备份策略
- 配置备份:定期备份Certimate配置
- 证书备份:保存重要证书的副本
- 多证书颁发机构:配置多个证书颁发机构作为备选
11. 总结
Certimate为免费SSL证书的申请和管理提供了完整的解决方案。通过本指南,您可以:
- 了解免费SSL证书服务商:选择最适合的证书颁发机构
- 快速部署Certimate:在几分钟内完成安装和配置
- 自动化证书管理:实现证书申请、部署和续期的全自动化
- 集成阿里云服务:将证书无缝部署到各种阿里云服务
免费SSL证书已经成为现代Web应用的标准配置,Certimate让这个过程变得简单、可靠且完全自动化。开始使用Certimate,让您的网站更安全!
相关链接: