借助 Let's Encrypt 节省 SSL 证书费用

向服务商购买一张常见的 DV 通配符 SSL 证书,通常每年价格在数百至一千多元人民币不等;若名下有多个域名需要使用证书,总费用每年可能达到数千元。

在当前强调降本增效的环境下,若评估后认为免费证书能够满足需求,小公司和个人网站即可节省相应成本。

Let's Encrypt 简介

Let's Encrypt 是一家免费、开放、自动化的公益性证书颁发机构(CA),由互联网安全研究组(ISRG)运作,属于非营利组织。其目标是推广 HTTPS 的应用,为构建更安全、尊重隐私的互联网提供免费而便捷的支持。

操作方法

根据不同使用环境,Let's Encrypt 提供多种验证与获取证书的方式。常用工具是 Certbot,详见文档:eff-certbot.readthedocs.io/en/stable/

在部分环境中,可配置工具定期自动续期,减少维护工作。

由于服务器环境较为老旧,且需要将证书上传至阿里云并部署到多个云服务,本文暂采用"本地生成证书---手动上传与更新"的方式。

0x01 在本地生成证书

本文使用 Docker 运行 Certbot,参见文档:eff-certbot.readthedocs.io/en/stable/i...

生成通配符证书的示例命令如下:

bash 复制代码
docker run -it --rm --name certbot \
  -v '/Users/mazhuang/some/path/letsencrypt:/etc/letsencrypt' \
  certbot/certbot certonly \
  --preferred-challenges dns \
  --manual \
  --server https://acme-v02.api.letsencrypt.org/directory \
  --key-type rsa --rsa-key-size 2048
  • --preferred-challenges dns:使用 DNS 方式进行域名验证;
  • --manual:以交互式方式进行询问与操作;
  • --key-type rsa --rsa-key-size 2048:生成 2048 位 RSA 私钥(部分阿里云服务不支持默认的 ECC 证书)。

执行后会依次询问邮箱、协议授权、域名等信息,随后提示添加 DNS TXT 记录以完成域名所有权验证,按提示操作即可。

生成成功后,证书与私钥保存在挂载的本地目录中,例如上述命令中的 /Users/mazhuang/some/path/letsencrypt/archive/{domain name}。各文件的说明可参考:eff-certbot.readthedocs.io/en/stable/u...

0x02 上传和部署证书

将证书上传到阿里云的数字证书管理服务。可使用其一键部署功能(付费),或在各云服务中手动选择使用该证书(免费),按需取用。

0x03 定期更新证书

Let's Encrypt 颁发的证书有效期为 90 天,建议在到期前 30 天内更新。可重复步骤 0x01 生成新证书,然后上传并部署。

注意事项

部分极为老旧的平台有可能不支持 Let's Encrypt 颁发的证书,建议评估后再决定是否使用,具体的兼容情况可以参考:letsencrypt.org/zh-cn/docs/...

比如我这边就遇到了因为使用的是 JDK 8 的低于 141 的版本,部署完证书后,发现 xxl-job 定时任务执行器没有注册上,报错 sun.security.validator.ValidatorException: PKIX path building failed

解决方法:

  1. 下载 ISRG Root X1 证书

    在这里可以找到: letsencrypt.org/certificate...

    sh 复制代码
    cd /opt
    get https://letsencrypt.org/certs/isrgrootx1.pem
  2. 导入证书到 JDK 的 cacerts 中

    sh 复制代码
    keytool -trustcacerts -keystore "/opt/jdk/jre/lib/security/cacerts" -storepass changeit -noprompt -importcert -alias lets-encrypt-x1 -file "/opt/isrgrootx1.pem"
  3. 重启服务

小结

以上步骤简单、成本为零。对小公司和个人网站而言,是节省 SSL 证书费用的可行方案。

若环境允许,建议配置自动化续期,进一步降低维护成本,按需采用。

参考链接

相关推荐
parade岁月1 分钟前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
妙码生花2 分钟前
从 PHP 到 AI + Golang,程序员自救转型手记(十六):目录结构更新、完善 token 系统(AI 表示 token 入库无需加密?)
前端·后端·ai编程
程序me7 分钟前
Prompt、Context、Harness、Loop 之后是什么? AI工程下一个半年的关键词
前端·后端·ai编程
米沙AI33 分钟前
go语言项目--实例化(图书管理)--v1
后端
MeixianAgent38 分钟前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
9i编程42 分钟前
SpringBoot 测试环境免发短信验证码方案,节省测试短信成本
后端
Ai拆代码的曹操42 分钟前
把线程 Dump 读薄:从 BLOCKED/WAITING/RUNNABLE 到问题定位的完整方法论
后端
雪隐1 小时前
个人电脑玩AI-09让5060 Ti给你打工——让 AI 读懂你的资料
人工智能·后端
小满zs2 小时前
Go语言第一章(入门)
后端·go
用户6757049885022 小时前
Kafka 太重?试试 NSQ:一个优雅到极致的消息队列
后端·go