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
相关产品推荐
相关产品推荐

