获取 HTTPS 协议所需的 SSL 证书
- 2024-12-04 19:56:00
- 丁国栋
- 原创 154
目前网站或者 Web 服务通过 HTTPS 协议访问早已是主流标准,因为 HTTP 协议不加密传输会导致数据在传输过程中被窃取,从而缺乏安全性。
要想获取 HTTPS 所需的 SSL 证书有很多种方法:
方法 |
优点 | 缺点 | 备注 |
1. 通过openssl,Microsoft AD CS等工具或系统自签发证书 | 操作简单,又能任意签发自己想要的证书,有效期长 | 为了让客户端信任证书需要额外的配置客户端,不适合于互联网范围内使用 | |
2. 通过其他工具签发,例如 certbot,acme.sh等 | 可以被大部分客户端所信任,能自动续订证书 | 有效期一般较短,比如三个月(90天) | 客户端需要保持自身证书系统的更新,用于云服务时需要自己对接API |
3. 购买付费证书 | 证书有效期时间长,能自动续订,支持与云服务商的服务集成使用 | 费用较高 | 部分服务商也支持购买免费版,但有一些限制,比如数量限制或者域名限制等。 |
一般来说经济实力雄厚的可以使用第三种,个人或者小微企业建议使用第二种。
通过 certbot 获取证书可参考 https://certbot.eff.org/instructions?ws=apache&os=pip&tab=wildcard
通过 acme.sh 获取证书可参考 https://github.com/acmesh-official/acme.sh
以下是使用 acme.sh 申请各种 DNS 服务商的 SSL 证书的快速命令。
详细可以参考 《acme.sh 快速指南》
物料准备:
- 任意合法的域名
- 域名已经配置DNS 解析,例如DNS服务器在腾讯云、阿里云、AWS、CloudFlare等
- 虚拟机、主机或云主机或云服务至少其中一种
- 拥有一套可以操作 DNS 解析的API Key 和 Secret
安装
curl https://get.acme.sh | sh -s email=ssl@thedf.cc或者先通过 Git 命令将 GitHub 的代码库克隆到本地
git clone https://github.com/acmesh-official/acme.sh.git
,然后执行 bash acme.sh/acme.sh -s email=ssl@thedf.cc
所需的环境变量
云服务商/DNS服务商 |
--dns 参数 | 环境变量 | 说明 | 备注 |
亚马逊 AWS |
dns_aws |
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_DNS_SLOWRATE=1 |
暂无 | 暂无 |
阿里云 |
dns_ali |
export Ali_Key= export Ali_Secret= |
暂无 |
暂无 |
腾讯云 |
dns_tencent |
export Tencent_SecretId= export Tencent_SecretKey= |
暂无 |
暂无 |
CloudFlare |
dns_cf |
export CF_Key= export CF_Email= |
暂无 |
暂无 |
export Tencent_SecretId= export Tencent_SecretKey= /root/.acme.sh/acme.sh --issue -d 'thedf.cc' -d '*.thedf.cc' --dns dns_tencent # 注意 -d 参数的前后顺序,没有 * 号的在前,有星号的在后
续订证书:acme.sh --renew -d thedf.cc --force
提示:
- 在申请证书时,一定要把普通域名放在前面,带通配符(*号)的域名放在后面,这样证书的名字和文件名称都不会包含特殊字符。可以通过 acme.sh list | grep thedf.cc 命令查询签发的证书。
- 为了后续能知道这个域名是通过什么方式签发的证书,建议利用好域名管理控制台的域名记录备注功能记录好(目前已知腾讯云、CF都支持),或者通过其他的方式记录好,比如监控软件、资产管理工具等。
--
评论列表
匿名
2024-12-27 11:50:19
Email: ****@**** IP: 223.*.*.226 (山东/青岛)
回复
写给别人看的文章容易遇到“知识诅咒”你以为很简单的东西在别人看来可能很复杂,从文章的受众考虑的话是可以写得专业一点,但用户中也有一些外行人,可以给出一些适合外行人看的链接或引导,就和给一些高级用户扩展阅读和深入阅读一样。
1/1
发表评论