用户在Heroku上配置SSL证书需要结合本身平台特性和SSL插件的使用,才能正确配置SSL证书,下面具体说一下详细步骤和注意事项:
一、准备工作:获取SSL证书
1. 申请或生成证书
可通过证书颁发机构(如Let's Encrypt、DigiCert等)购买或申请免费SSL证书。生成证书时需生成私钥(.key)和证书文件(.crt),并可能需要中间证书文件(CA Bundle)。
免费证书示例:使用Let's Encrypt生成证书,需通过工具(如Certbot)完成域名验证和证书签发。
2. 文件命名与上传
将证书文件重命名为server.crt,私钥文件为server.key,并放置于项目根目录或指定路径。
二、Heroku配置步骤
1. 添加SSL Endpoint插件
使用Heroku CLI创建SSL Endpoint插件:
bash
复制
heroku addons:create ssl:endpoint
注意:此插件需付费,免费层需升级至Hobby计划(每月7美元)。
2. 上传证书到Heroku
运行以下命令上传证书和私钥:
bash
复制
heroku certs:add server.crt server.key --type endpoint
若出现CLI版本问题,需更新Heroku CLI工具。
3. 获取SSL域名并配置DNS
执行heroku certs:info查看分配的SSL端点域名(如example-1234.herokussl.com)。
在DNS服务商处添加CNAME记录,将自定义域名(如www.example.com)指向Heroku的SSL域名。
4. 强制HTTPS重定向
在Heroku应用中配置中间件或代码逻辑,将所有HTTP请求重定向到HTTPS。例如,在Node.js中添加:
javascript
复制
app.use((req, res, next) => {
if (req.header('x-forwarded-proto') !== 'https') {
res
redirect(301, `https://${req.header('host')}${req.url}`);
} else {
next();
}
});
三、验证与维护
1. 测试SSL配置
使用curl -kvI https://www.example.com检查证书链和加密状态。
在线工具(如SSL Labs)可检测证书有效性、协议兼容性等。
2. 更新证书
证书到期前,通过以下命令更新:
bash
复制
heroku certs:update server.crt server.key --endpoint [SSL_ENDPOINT_NAME]
注意:根据行业新规,2026年起SSL证书有效期将逐步缩短至47天,需定期更新。
3. 监控与自动化续期
使用Let's Encrypt证书时,可通过脚本或第三方工具(如Certbot)实现自动续期,避免手动操作。
四、免费层替代方案
若无法支付Hobby计划费用,可尝试以下方法:
1. 反向代理服务:通过Cloudflare免费SSL服务代理Heroku流量,无需在Heroku端配置证书。
2. 第三方平台托管:如Vercel或Netlify提供免费HTTPS,将静态站点托管至这些平台并反向代理Heroku API。
常见问题
混合内容警告:确保所有资源(如图片、脚本)通过HTTPS加载,避免浏览器提示不安全。
DNS传播延迟:CNAME记录生效可能需要几小时,建议等待后重试。
用户通过以上四大步骤,可以完成Heroku的SSL证书配置,保障数据传输安全。客户如果需更多细节,可参考Heroku官方文档或相关技术社区支持。