20221224-HomeAssistant树莓派-远程安全访问

Home Assistant 本身为外网访问提供完整的 Let’s Encryption + Duck Dns 支持,
基于国内的网络环境,个人不太推荐,一是前者的加密需要每3个月进行更新,虽然有自动更新脚本和组件,但心里始终挂着一件事不舒服,二是国内网络运行商基本上封闭了80端口,后者直接ng

国内进行端口转发,内网穿透、端口映射甚至是公网ip 设置都障碍重重,所以很多外文教程并不适用于国内的网络环境

背景

80 端口封闭,443 端口开放,。
443 端口是https 的默认端口,映射之后访问不需要在域名后面添加端口号,适合强迫症使用,如果几个端口都封了的话,老实说,除了内网穿透,我也没有办法了

无内网穿透 目前内网穿透没有什么好的免费方法,要么使用花生壳 ,要么使用frps 但是你也得有个服务器

华硕路由器+改版梅林固件,选择koolshare 梅林固件主要是由 阿里云DDNS 插件,手动提交其实也是没有问题的,端口转发的话,基本上所有路由器固件都自带,无需担心

HA 加密且无摄像头接入,没有一个摄像头是安全的,而且犯罪成本低,犯罪收益相当大,你可以试想一下你的生活轨迹、家庭情况瞬间暴露在外。当然,室外监控和店铺使用的朋友可以忽略此项。

申请域名

首先登陆阿里云 进入域名购买界面,在国内购买 cn com 域名必须进行实名认证

这里选择万网的原因是方便接入去CA 证书的申请,一条龙服务舒心

申请证书

阿里云的云盾证书服务 对官人站提供免费的一年期CA 证书,一个账户可以申请5份免费证书

免费证书实际上是由 赛门铁克 颁发的,如果你使用万网的域名,只要在签发过程中选择自动认证即可,手动认证的方法也很简单,前往域名解析页添加一段txt 记录即可

证书签发后,我们就可以下载相关的证书了,如果你是使用ngix 或者apache 的话 按照指南下载调用即可,拿不准的话就选择其他下载,一般情况下可以下载到如下3个文件

xxxx.pem 公钥文件
xxxx.key 私钥文件
xxxx.chain 证书链文件

前2者必须有,后者可有可无,到这里我们的前期准备就基本完成了,接下来是一系列的路由器操作

DDNS

有了域名之后,我们就要将其解析到家中的公网ip ,才能实现外网访问,如背景中所述,目前大部分的家庭宽带用户只有动态的公网ip,而我们不可能每次都手动修改解析,因此需要DDNS 这一动态解析工具

从插件中心下载安装 ALIDDNS 插件

app key 和secret 从阿里云账户详情里面获取,检查时间可以设置地大一些,毕竟ip 更换得不是那么勤

设置完毕后你就可以通过这个域名访问该ip 下的服务了,如果你在路由器的 系统管理 中打开了从互联网 设置路由器的话,那么现在你就可以通过访问域名+端口号 进入路由器设置面板了

SSL 证书验证

华硕路由器自带的ai cloud 功能默认使用https 服务,并支持上传 证书,可以简便地帮助我们验证证书的有效性

当然最后的端口号是可以更改的。点击网址进入后,选择左下角的设定 - 证书 -汇入证书,依次上传下载的 3 个文件。之后保存退出,刷新网页,不出意外的话,你的地址左侧将会出现 绿钥匙图标。这说明你的证书是安全有效的。我们可以放心地将其用在 HA 中了。

端口转发

既然要做到外网访问,就必须把内网的服务映射到外网,在这里就是所谓的进行端口转发,我们的ha 使用的是默认端口 8123 ,我们前往 外部网络,端口转发,中添加如下规则

你可以将 通信端口范围,更改成其他外网访问的端口,443 是https 的默认访问端口

至此,所有的铺垫工作都完成了,我们正式将ha 映射到外网中

ha https

打开 configuration.yaml 文件,配置 http 项:

http:
api_password: !secret http_password //访问密码
trusted_networks: //免密登陆白名单,建议添加内网地址
- 127.0.0.1
- ::1
- 192.168.50.0/24
base_url: www.cxlwill.pub //访问地址,填入 DDNS 中设置的网址
ssl_certificate: /home/homeassistant/.homeassistant/cert.pem //公钥文件地址,注意放在有读取权限的文件夹
ssl_key: /home/homeassistant/.homeassistant/cert.key //私钥文件地址,注意放在有读取权限的文件夹
之后重启 HA,你会发现之前的 http://IP:8213 无法登陆了。请将访问地址更改为 https://域名:端口号,如果设置为 443 端口,则无需端口号。

现在你的ha 已经可以完美进行外网的登陆了,并且在浏览的地址栏左侧 你可以看到令人安心的绿钥匙图标

HB HADashboard 等相关服务

HA 进行全站https 后,千万记得更改相关服务的访问地址

HB 中的 config.json :

“platforms”: [
{
“platform”: “HomeAssistant”,
“name”: “HomeAssistant”,
“host”: “https://“, //修改为最新的域名,注意使用 https
•••
“verify_ssl”: false //建议使用 false
}
],
之后重启 HB,无响应的状况应该就消失了。

HADashboard 中的 Appdaemon.yaml:

HASS:
ha_url: https://xxx.com //这里也要更改为最新的地址
ha_key:

其他使用ha api 服务,例如ifttt 中的调用地址也需要进行即使更新,具体就不展开了

同样,iod app 中的访问地址也需要一并进行更改

后续注意事项

HA 全站 Https 之后,所有接入的服务都必须为 https,否则将会出现不安全的警示。请特别留意一些自定义组件的 API 和图标源,官方的组件一般情况下不会出现此类情况,RTSP 等协议不受影响

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~