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 certificatescertbot revoke 管理已有证书