获取免费的ssl证书
网站上线后,开启 HTTPS 几乎成了“标配”。不仅让访问更安全,还能提升 SEO。今天这篇文章,我就来分享一下我是如何使用 Certbot 获取免费 SSL 证书,然后将它导出成 Java(比如 Tomcat)项目可以使用的 .p12
格式,顺便再讲讲几个常用的证书管理操作。
一、用 Certbot 获取免费的 HTTPS 证书
我们用的是 Let's Encrypt 提供的免费证书,工具是 certbot
。我使用的是最简单的 standalone
模式,适合没有 Web 服务器(比如 Nginx、Apache)正在运行的时候。
直接上命令:
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
来转换:
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项目可以自动刷新证书
三、查看系统中已有证书
有时候我们忘记申请了哪些证书,可以通过这个命令查看:
certbot certificates
会列出所有已生成的证书,包含域名、到期时间、路径等信息。
四、删除无效或误删的证书追踪信息
有时候域名不用了,或者证书文件不小心被手动删掉了,但 Certbot 还在追踪它,这时候可以手动移除它:
certbot revoke --cert-name your-domain.com
注意 --cert-name
用的是之前 certbot certificates
命令中显示的证书名字,而不是文件名。
五、更新证书(续期)
Let's Encrypt 的证书默认有效期是 90 天,建议用计划任务自动续期。不过你也可以手动执行续期命令:
certbot renew
它会检查所有快过期的证书,如果条件满足(比如服务器依然运行在同一台机器上、域名解析没变),就会自动续期。
你可以加上 --dry-run
参数先试试看流程能不能跑通:
certbot renew --dry-run
小结 ☕️
整个流程其实并不复杂:
- 用 certbot 获取免费证书
- 用 openssl 转换成 Java 可用的
.p12
文件,也可以使用letsencrypt-helper-tomcat - 配置进你的服务
- 记得定期续期或设置自动续期
- 用
certbot certificates
和certbot revoke
管理已有证书