找回密码
 立即注册

微信扫码登录

搜索
查看: 578|回复: 15

[技术讨论] HomeAssistant 局域网 HTTPS重定向及证书配置

[复制链接]

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
发表于 2026-7-7 11:15:30 | 显示全部楼层 |阅读模式
本帖最后由 mingyue5826 于 2026-7-7 11:26 编辑

HomeAssistant 局域网 HTTPS重定向及证书配置
适用场景:纯内网访问、HTTP自动跳转HTTPS、浏览器安全绿锁、无需公网端口映射保留原始http:ip:8123访问
1. 证书申请1.1 自签名证书申请(内网测试用)1.1.1 创建证书目录mkdir -p /root/ssl/ha.your-domain.com1.1.2 一键生成10年自签名证书openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-subj "/CN=ha.local" \
-addext "subjectAltName=IP:192.168.101.62,DNS:ha.your-domain.com" \
-keyout /root/ssl/ha.your-domain.com/key.pem \
-out /root/ssl/ha.your-domain.com/cert.pem1.1.3 优缺点
  • ✅ 优点:有效期10年、无需联网、支持 IP+域名 双适配、永久不用续签
  • ❌ 缺点:本地自签不被浏览器信任、不安全警告、部分APP/HA集成会拦截

1.2 腾讯云可信SSL证书申请(最终生产推荐)1.2.1 申请流程
  • 腾讯云控制台 → SSL证书 → 免费DV证书申请
  • 绑定域名:ha.your-domain.com
  • 验证方式:DNS自动验证(腾讯云域名自动过审)
  • 签发后下载 Nginx 格式 证书包

1.2.2 得到文件
  • ha.your-domain.com.key(私钥)
  • ha.your-domain.com_bundle.pem(完整证书链)

1.2.3 优缺点
  • ✅ 优点:官方CA信任、浏览器绿锁、无警告、兼容所有HA组件、手机APP
  • ❌ 缺点:有效期仅90天、不支持内网IP(IP访问仍报错)、需要定期续签

2. Home Assistant configuration.yaml 配置2.1 完整配置
在/root/config/configuration.yaml中进行修改
http:
  server_port: 8123
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.32.0/23
    - 192.168.101.0/242.2 配置详细说明
  • server_port: 8123:HA 仅开启原生 HTTP,不开启 HTTPS,加密全部交给NPM反向代理
  • use_x_forwarded_for: true:允许代理传递真实访问IP、协议状态
  • 172.30.32.0/23:HA加载项Docker网段(NPM在此网段,必须信任,否则400报错)
  • 192.168.101.0/24:自家局域网网段,信任内网设备

修改后重启 HomeAssistant 生效
3. Nginx Proxy Manager(NPM)安装步骤
  • HA 后台 → 设置 → 加载项 → 加载项商店
  • 搜索 Nginx Proxy Manager 安装
  • 开启:开机启动
  • 启动加载项,打开 WebUI
  • 默认账号:admin@example.com / changeme
  • 首次登录强制修改密码

4. NPM 详细配置4.1 NPM SSL 证书上传(两种证书通用教程)
路径:SSL Certificates → Add Custom Certificate
image.png
方式A:自签名证书
  • Private Key:上传 key.pem
  • Certificate:上传 cert.pem
  • Intermediate:留空

方式B:腾讯云CA证书(最终使用)
  • Private Key:上传 xxx.key
  • Certificate:上传 xxx_bundle.pem
  • Intermediate:留空(bundle已包含完整链)

重点:NPM网页本地上传,不需要配置宿主机目录、不需要软链接
4.2 NPM Proxy Host 代理配置
新增代理主机规则:
  • Domain Names:ha.your-domain.com
  • Scheme:http
  • Forward Hostname:homeassistant
  • Forward Port:8123
  • 开启:Websockets Support、Block Common Exploits

SSL 选项卡:
  • 选择刚上传的腾讯云证书
  • ✅ Force SSL(强制HTTP跳转HTTPS)
  • ✅ HTTP/2 Support
  • ✅ HSTS Enabled

保存即可。
image.png
image.png
image.png
5. 局域网 DNS / Hosts 配置5.1 软路由iStoreOS(OpenWrt) hosts配置
  • 登录 iStoreOS → 网络 → DHCP/DNS → 常规
  • 新增扩展hosts文件中的主机后缀:/ha.your-domain.xyz/192.168.101.62
  • 保存并应用

效果:全屋手机、电脑、电视自动解析域名,无需单独改设备hosts

image.png
5.2 Windows 本地 Hosts 配置(单设备生效)
路径:C:\Windows\System32\drivers\etc\hosts添加一行:
192.168.101.62   ha.your-domain.com6. 最终访问方式说明6.1 域名访问(推荐、完美)
  • http://ha.your-domain.com → 自动301跳转HTTPS
  • https://ha.your-domain.com → 绿锁安全、正常使用

6.2 IP访问(不推荐)
  • http://192.168.101.62:8123:直连HA、不走NPM、无跳转、明文HTTP
  • https://192.168.101.62:8123:证书域名不匹配、报错不安全

最佳习惯:全程只用域名访问
7. 腾讯云证书 90天 续签更新教程
  • 腾讯云控制台重新申请新证书、下载Nginx版本
  • 进入 NPM → SSL Certificates
  • 删除旧证书
  • 重新上传新的 key + bundle.pem
  • 进入 Proxy Host,重新选择新证书保存
  • 重启 NPM 加载项即可完成更新

8. 最终架构总结
  • HA 裸跑 HTTP:8123
  • NPM 负责 80/443 反向代理、SSL加密、强制跳转
  • iStoreOS 劫持内网域名解析,不走公网
  • 全网内网 HTTPS 绿锁、无警告、安全稳定

回复

使用道具 举报

19

主题

516

回帖

4386

积分

论坛UI达人

积分
4386
金钱
3841
HASS币
60
发表于 2026-7-7 12:38:47 | 显示全部楼层
本地10年自签已经足够使用了。
外网访问使用ACME自动续签了。
这如此复杂的实现本地自签,还要90天续签,感觉维护必要啊。
回复

使用道具 举报

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
 楼主| 发表于 2026-7-7 13:59:32 | 显示全部楼层
hhh. 发表于 2026-7-7 12:38
本地10年自签已经足够使用了。
外网访问使用ACME自动续签了。
这如此复杂的实现本地自签,还要90天续签,感 ...

昨天搞了acme,但是acme生成的证书如果用npm读取的话有点麻烦,还得给npm挂载config/下的证书内容,就放弃了,想着自己写个调用腾讯云的api的脚本来实现了
回复

使用道具 举报

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
 楼主| 发表于 2026-7-7 14:03:54 | 显示全部楼层
hhh. 发表于 2026-7-7 12:38
本地10年自签已经足够使用了。
外网访问使用ACME自动续签了。
这如此复杂的实现本地自签,还要90天续签,感 ...

我觉得如果ha直接默认https的话,直接用acme就可以了,也不用配置Nginx Proxy Manager
回复

使用道具 举报

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
 楼主| 发表于 2026-7-7 14:15:53 | 显示全部楼层
hhh. 发表于 2026-7-7 12:38
本地10年自签已经足够使用了。
外网访问使用ACME自动续签了。
这如此复杂的实现本地自签,还要90天续签,感 ...

刚刚又看了下,NPM里可以直接申请Let’s Encrypt证书,我研究下,抛弃acme
回复

使用道具 举报

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
 楼主| 发表于 2026-7-7 14:50:35 | 显示全部楼层
又研究了下NPM直接申请Let’s Encrypt证书,发现加载项商店安装的是阉割的版本,NPM内置的 DNSPod 插件缺少依赖 zope 模块
另外就算ha主机用acme申请证书的话,加载项商店没法挂载宿主机的证书文件
如果再折腾的话,就太麻烦了。

大佬们有没有更好的方式,因为我确实是内网访问
回复

使用道具 举报

4

主题

41

回帖

569

积分

论坛技术达人

积分
569
金钱
519
HASS币
20
发表于 2026-7-7 21:11:05 | 显示全部楼层
内网不用自签是为了不导入证书吗

ha的app可以设置内外网使用不同域名,内网自签 外网代理就行了
Screenshot_20260707-210317_1.png
回复

使用道具 举报

54

主题

166

回帖

862

积分

高级会员

积分
862
金钱
642
HASS币
0
发表于 2026-7-7 22:17:14 | 显示全部楼层
hhh. 发表于 2026-7-7 12:38
本地10年自签已经足够使用了。
外网访问使用ACME自动续签了。
这如此复杂的实现本地自签,还要90天续签,感 ...

824627a9-9029-40db-83d3-62ec6db2a38d.png lucky里是不是这样算自动续签了啊,我好像没点过了,发现6月份续签了
回复

使用道具 举报

19

主题

516

回帖

4386

积分

论坛UI达人

积分
4386
金钱
3841
HASS币
60
发表于 2026-7-7 22:29:10 | 显示全部楼层
keepwin2023 发表于 2026-7-7 22:17
lucky里是不是这样算自动续签了啊,我好像没点过了,发现6月份续签了

是的,默认小于30天就续签,所以虽然证书是3个月,正常两个月就再次续签了。
回复

使用道具 举报

10

主题

50

回帖

239

积分

中级会员

积分
239
金钱
179
HASS币
0
 楼主| 发表于 2026-7-8 08:47:17 | 显示全部楼层
lzhbzr 发表于 2026-7-7 21:11
内网不用自签是为了不导入证书吗

ha的app可以设置内外网使用不同域名,内网自签 外网代理就行了

学到了,昨天设置了这里,把内网和外网分开了。不过我一般不是直接外网访问,也是WireGuard远程回家访问
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-7-23 03:57 , Processed in 0.013753 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表