使用 Let's Encrypt 为知行之桥配置自动更新的 HTTPS 证书
© All rights reserved. • 西安知行软件有限公司 • 陕ICP备09022277号
概述
Let's Encrypt 是由 Internet Security Research Group (ISRG) 提供的免费、自动化、开放的证书颁发机构(CA)。
通过 Let's Encrypt,用户可以免费为自己的域名申请受主流浏览器信任的 HTTPS 证书,而无需购买商业证书。
Let's Encrypt 提供以下优势:
- 免费使用,无需购买证书
- 自动完成域名验证和证书签发
- 自动续期,无需人工干预
- 广泛兼容主流浏览器和操作系统
- 支持标准 ACME 协议,易于集成和自动化
相比传统的商业证书,Let's Encrypt 将证书管理从手工操作转变为自动化流程,显著降低了运维成本和证书过期风险。
工作原理
Let's Encrypt 证书默认有效期为 90 天。
虽然有效期较短,但配合 ACME 客户端(例如 Certbot)可以实现全自动续期。
典型工作流程如下:
- 安装 ACME 客户端(Certbot)
- 验证域名所有权
- 自动申请证书
- 将证书部署到服务器
- 定期自动检查证书有效期
- 到期前自动续期
- 触发自定义 Hook 更新应用程序使用的证书文件
整个过程无需人工干预。
前提条件
在申请证书之前,请确保满足以下条件:
- 已拥有域名(例如:
example.com) - 域名已解析到 知行之桥 所在服务器
- 服务器的 80 端口可从公网访问
- 已安装并运行 知行之桥
- 拥有服务器管理员权限
安装 Certbot
以下示例基于 Ubuntu / Debian 系统。
安装 Certbot 及其依赖:
sudo apt update
sudo apt install certbot
确认安装成功:
certbot --version
示例输出:
certbot 3.x.x
申请证书
执行以下命令申请证书:
sudo certbot certonly --standalone \
-d example.com \
-d www.example.com
如果服务器已经有 Web 服务占用 80 端口,可以使用 WebRoot 模式:
sudo certbot certonly --webroot \
-w /path/to/webroot \
-d example.com \
-d www.example.com
申请成功后,证书将保存在:
/etc/letsencrypt/live/example.com/
目录结构如下:
cert.pem # 服务器证书
chain.pem # 中间证书链
fullchain.pem # 服务器证书 + 中间证书链
privkey.pem # 私钥
知行之桥使用 PKCS12(PFX)证书
知行之桥基于 Java 和 Jetty,使用 Java KeyStore 加载 TLS 证书。
因此,需要将 Let's Encrypt 提供的 PEM 格式证书转换为 PKCS12(.pfx 或 .p12)格式。
执行以下命令:
openssl pkcs12 -export \
-out /opt/arc/mycertificate.pfx \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/chain.pem \
-name arc
系统会提示输入 PFX 密码,请妥善保管。
配置 知行之桥启用 TLS
在 arc.properties 中添加以下配置:
cdata.tls.keyStoreType=PKCS12
cdata.tls.keyStorePath=${cdata.home}/mycertificate.pfx
cdata.tls.keyStorePassword=mypassword
说明:
cdata.tls.keyStoreType:证书格式,固定为PKCS12cdata.tls.keyStorePath:PFX 文件路径cdata.tls.keyStorePassword:生成 PFX 时设置的密码
保存配置后,重启 知行之桥 服务使配置生效。
自动续期与自动生成 PFX
Certbot 会自动创建系统定时任务,在证书即将过期时自动续期。
可通过以下命令验证自动续期是否正常工作:
sudo certbot renew --dry-run
示例输出:
Congratulations, all simulated renewals succeeded
由于 知行之桥 使用的是 PFX 文件,因此需要在证书续期成功后自动重新生成 PFX 文件。
Certbot 支持通过 Deploy Hook 执行自定义脚本。
创建目录:
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
创建脚本:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/arc-export-pfx.sh
写入以下内容:
#!/bin/sh
DOMAIN="example.com"
OUTPUT="/opt/arc/mycertificate.pfx"
PASSWORD="mypassword"
openssl pkcs12 -export \
-out "$OUTPUT" \
-inkey "/etc/letsencrypt/live/$DOMAIN/privkey.pem" \
-in "/etc/letsencrypt/live/$DOMAIN/cert.pem" \
-certfile "/etc/letsencrypt/live/$DOMAIN/chain.pem" \
-name arc \
-passout pass:"$PASSWORD"
systemctl restart arc
授予执行权限:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/arc-export-pfx.sh
Deploy Hook 仅在证书实际续期成功后执行。
每次证书续期时,Certbot 将自动完成以下操作:
- 更新 PEM 格式证书
- 自动生成新的 PFX 文件
- 自动重启 知行之桥 服务
- 知行之桥 加载最新证书
整个流程无需人工干预。
验证 TLS 配置
重启 知行之桥后,可通过浏览器访问:
https://example.com:8443
也可以使用 OpenSSL 检查证书信息:
openssl s_client -connect example.com:8443 -servername example.com
检查证书有效期:
openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -noout -dates
常见问题
是否必须使用商业证书?
不需要。
对于绝大多数场景,包括:
- 企业官网
- API 服务
- 知行之桥 管理界面
- B2B 集成平台
Let's Encrypt 提供的证书已经完全满足需求。
商业证书通常只适用于存在特殊合规要求的场景,例如:
- 银行
- 政府机构
- 金融行业
- 特定企业采购规范
Let's Encrypt 证书为什么只有 90 天有效期?
短周期证书能够:
- 降低私钥泄露风险
- 提高自动化程度
- 减少遗忘续期导致的服务中断
由于续期过程完全自动化,用户通常无需关注证书有效期。
自动续期失败怎么办?
建议定期检查 Certbot 日志:
/var/log/letsencrypt/letsencrypt.log
手动测试续期:
sudo certbot renew --dry-run
如果测试成功,则后续续期通常不会出现问题。
总结
通过 Let's Encrypt 和 Certbot,知行之桥用户可以快速实现:
- 免费 HTTPS 证书
- 自动证书申请
- 自动证书续期
- 自动生成 PFX 文件
- 自动更新 知行之桥 TLS 配置
整个方案具有以下特点:
- 零证书采购成本
- 零人工续期操作
- 基于开放标准
- 易于自动化和集成
推荐所有公网部署的 知行之桥实例启用 HTTPS,并使用 Let's Encrypt 实现证书自动化管理。


