You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署HomeAssistant自签名证书配置失败求助

解决HomeAssistant Docker容器中自签名SSL证书生效问题

核心错误分析

日志中的[SSL] PEM lib (_ssl.c:3874)错误,通常指向证书文件格式错误、内容不完整、权限不足或证书与密钥不匹配。结合你的配置和证书生成步骤,以下是针对性的排查修复方案:

排查修复步骤

1. 确认fullchain.pem的内容正确性

你当前配置中使用的fullchain.pem需要包含**服务器证书(cert.pem)和CA根证书(ca.pem)**的完整内容,顺序为:

  • 先粘贴cert.pem的全部内容(从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----)
  • 再粘贴ca.pem的全部内容(同样包含首尾标记)

如果未创建该文件,直接在容器的/config目录下创建:

# 进入HomeAssistant容器(替换容器名或ID)
docker exec -it homeassistant bash
# 合并证书生成fullchain.pem
cat /config/cert.pem /config/ca.pem > /config/fullchain.pem

2. 验证证书与密钥的匹配性

使用OpenSSL命令确认服务器证书cert.pem和密钥cert-key.pem是否配对:

# 提取证书的模数并计算MD5
openssl x509 -noout -modulus -in /config/cert.pem | openssl md5
# 提取密钥的模数并计算MD5
openssl rsa -noout -modulus -in /config/cert-key.pem | openssl md5

两个命令输出的MD5值必须完全一致,否则说明证书和密钥不匹配,需要重新生成证书。

3. 检查证书文件的权限

确保HomeAssistant进程能读取证书文件,进入容器后执行:

ls -l /config/*.pem

文件权限应至少为-rw-r--r--(644),如果权限不足,执行:

chmod 644 /config/*.pem

4. 验证服务器证书的SAN配置

确认生成的cert.pem包含正确的Subject Alternative Name(SAN):

openssl x509 -in /config/cert.pem -text -noout | grep -A 3 "Subject Alternative Name"

输出应显示DNS:*.RWD.com, IP Address:192.168.50.10,如果缺失,说明生成证书时extfile.cnf的BOM问题未解决,需重新生成:

  • 用Notepad++打开extfile.cnf,设置编码为UTF-8无BOM
  • 重新执行证书生成命令:
openssl x509 -req -sha256 -days 3650 -in cert.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile.cnf -CAcreateserial

然后重新生成fullchain.pem。

5. 重启HomeAssistant容器

完成上述操作后,重启容器使配置生效:

docker restart homeassistant

内容的提问来源于stack exchange,提问作者JStevens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:20:32