『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1876|回复: 3

[技术探讨] 【远程系列】HA Cloud登录流程分析

[复制链接]

1

主题

1

帖子

149

积分

论坛分享达人

积分
149
金钱
148
HASS币
0
发表于 2022-10-24 10:30:02 | 显示全部楼层 |阅读模式
本帖最后由 dellzhui 于 2022-10-30 18:30 编辑

HomeAssistant Cloud是HA官方的远程接入方法,官网地址是:https://www.home-assistant.io/cloud/
Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out their website for more information on features, pricing and how to configure Home Assistant.
可以看出,真正在运营的是nabucasa
开启HA Cloud的方法:https://www.nabucasa.com/config/

                               
登录/注册后可看大图



                               
登录/注册后可看大图


用户须在https://www.nabucasa.com/注册,可免费试用一个月。
如上登录后,即可开启HA Cloud,如下:


                               
登录/注册后可看大图


显示远程环境正在准备,切到core后台打印,有以下输出:
2022-05-19 16:17:48 INFO (MainThread) [hass_nabucasa.iot] Connected
2022-05-19 16:17:48 INFO (SyncWorker_2) [homeassistant.loader] Loaded binary_sensor from homeassistant.components.binary_sensor
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.setup] Setting up binary_sensor
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.setup] Setup of domain binary_sensor took 0.0 seconds
2022-05-19 16:17:48 INFO (SyncWorker_4) [homeassistant.loader] Loaded stt from homeassistant.components.stt
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.components.binary_sensor] Setting up binary_sensor.cloud
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.setup] Setting up stt
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.setup] Setup of domain stt took 0.0 seconds
2022-05-19 16:17:48 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new binary_sensor.cloud entity: binary_sensor.remote_ui
2022-05-19 16:17:49 INFO (SyncWorker_1) [hass_nabucasa.acme] Register a ACME account with TOS: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
2022-05-19 16:17:50 INFO (SyncWorker_5) [hass_nabucasa.acme] Initialize challenge for a new ACME certificate
2022-05-19 16:17:52 INFO (MainThread) [hass_nabucasa.acme] Wait 60sec for publishing DNS to ACME provider
2022-05-19 16:18:52 INFO (SyncWorker_4) [hass_nabucasa.acme] Finishing challenge for the new ACME certificate
2022-05-19 16:18:56 INFO (SyncWorker_4) [hass_nabucasa.acme] Create new certificate: /home/security/work/ha/core/config/.cloud/remote_fullchain.pem
2022-05-19 16:18:59 INFO (MainThread) [snitun.utils.aiohttp_client] AioHTTP snitun client started on 127.0.0.1:19301
以上打印可以看出,登录HA Cloud后,HA Core尝试申请https证书,并启动了snitun client。

此时web:

                               
登录/注册后可看大图

可以看出已经生成了用于远程访问的https连接,但Remote Control的按钮还没有开启,我们开启它

                               
登录/注册后可看大图

此时core出现新的log如下:
2022-05-19 16:22:23 INFO (MainThread) [snitun.utils.aiohttp_client] AioHTTP snitun client connected to: ap-southeast-1-1.ui.nabu.casa:443
可以看出snitun client已经连接到了server。
我们打开上述https链接看看:

                               
登录/注册后可看大图

可以看出已经可以访问到我们本地的HomeAssistant,chrome浏览器显示证书是受信任的,我们看一下这个https url使用的证书:

                               
登录/注册后可看大图

可以看出使用的是Let's Encrypt下发的R3证书,Let's Encrypt是一个使用广泛的受信任的免费证书颁发机构。至此,我们完成了HA Cloud的登录,并得出以下结论:
  • 采用了SNI技术
  • 使用Let's Encrypt免费https证书


此前猜测可能会用到诸如nps、ngrok等透明代理技术,这些大部分基于端口转发,也即云端需要为每一个client分配不同的代理port,看来HA Cloud采用了不同的技术方案,也即SNI,可以简单理解成https的透明代理,只不过https证书保存在用户本地的HA服务器,不在云端,保证了安全性
下一章节,我将基于HA Cloud开源代码继续分析其内部实现细节。



评分

参与人数 3金钱 +33 收起 理由
sorrypqa + 8 论坛有你更精彩!
+ 20 感谢楼主分享!
qqtianyu520 + 5 厉害了word楼主!

查看全部评分

回复

使用道具 举报

3

主题

119

帖子

1566

积分

金牌会员

Rank: 6Rank: 6

积分
1566
金钱
1447
HASS币
0
发表于 2022-10-24 12:05:45 | 显示全部楼层
厉害了,我默认没这个功能
回复

使用道具 举报

15

主题

656

帖子

2832

积分

金牌会员

Rank: 6Rank: 6

积分
2832
金钱
2175
HASS币
91

教程狂人

QQ
发表于 2022-10-29 23:10:27 | 显示全部楼层
你这是要爆破了?
回复

使用道具 举报

4

主题

170

帖子

600

积分

高级会员

Rank: 4

积分
600
金钱
430
HASS币
0
发表于 2022-10-30 11:50:31 | 显示全部楼层
6.5刀有点贵
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 21:42 , Processed in 0.055923 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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