Skip to content

获取免费的ssl证书 ​

网站上线后,开启 HTTPS 几乎成了“标配”。不仅让访问更安全,还能提升 SEO。今天这篇文章,我就来分享一下我是如何使用 Certbot 获取免费 SSL 证书,然后将它导出成 Java(比如 Tomcat)项目可以使用的 .p12 格式,顺便再讲讲几个常用的证书管理操作。


一、用 Certbot 获取免费的 HTTPS 证书 ​

我们用的是 Let's Encrypt 提供的免费证书,工具是 certbot。我使用的是最简单的 standalone 模式,适合没有 Web 服务器(比如 Nginx、Apache)正在运行的时候。

直接上命令:

bash
certbot certonly --standalone -d www.yusme.link -d yusme.link

解释一下:

  • certonly:表示只生成证书,不自动配置服务器
  • --standalone:用 certbot 自己启动一个临时 Web 服务监听 80 端口
  • -d:指定你要申请证书的域名,可以写多个(比如带 www 的和不带的)

运行之后,只要你的域名正确解析到了这台服务器,并且 80 端口没被占用,基本都会成功。成功后证书会保存在:

/etc/letsencrypt/live/你的域名/

里面有几个重要的文件:

  • privkey.pem:私钥
  • cert.pem:你的证书
  • chain.pem:中间证书链
  • fullchain.pem:cert.pem + chain.pem 拼起来的完整证书链

二、导出成 Java Keystore 格式(.p12) ​

如果你是用 Java 或 Tomcat,SSL 通常不直接用 PEM 格式,而是用 Java 的 keystore 格式。我们可以用 openssl 来转换:

bash
openssl pkcs12 -export \
  -in fullchain.pem \
  -inkey privkey.pem \
  -out keystore.p12 \
  -name tomcat \
  -CAfile chain.pem \
  -caname root

参数说明:

  • -in:你的完整证书
  • -inkey:你的私钥
  • -out:导出的文件名(你可以随便改)
  • -name:给这个证书起个名字(Tomcat 项目配置时会用到)
  • -CAfile:中间证书
  • -caname:根证书名称(可自定义)

生成后你会得到一个 keystore.p12 文件,把它放进你的 Spring Boot 或 Tomcat 项目中,再通过配置文件启用就行了。

GitHub有一个letsencrypt-helper-tomcat项目可以自动刷新证书


三、查看系统中已有证书 ​

有时候我们忘记申请了哪些证书,可以通过这个命令查看:

bash
certbot certificates

会列出所有已生成的证书,包含域名、到期时间、路径等信息。


四、删除无效或误删的证书追踪信息 ​

有时候域名不用了,或者证书文件不小心被手动删掉了,但 Certbot 还在追踪它,这时候可以手动移除它:

bash
certbot revoke --cert-name your-domain.com

注意 --cert-name 用的是之前 certbot certificates 命令中显示的证书名字,而不是文件名。


五、更新证书(续期) ​

Let's Encrypt 的证书默认有效期是 90 天,建议用计划任务自动续期。不过你也可以手动执行续期命令:

bash
certbot renew

它会检查所有快过期的证书,如果条件满足(比如服务器依然运行在同一台机器上、域名解析没变),就会自动续期。

你可以加上 --dry-run 参数先试试看流程能不能跑通:

bash
certbot renew --dry-run

小结 ☕️ ​

整个流程其实并不复杂:

  1. 用 certbot 获取免费证书
  2. 用 openssl 转换成 Java 可用的 .p12 文件,也可以使用letsencrypt-helper-tomcat
  3. 配置进你的服务
  4. 记得定期续期或设置自动续期
  5. 用 certbot certificates 和 certbot revoke 管理已有证书