默认情况下,Home Assistant安装完成后,使用HTTP访问。如果在内网使用,HTTP相对还比较安全。但是,为了能让手机在外网访问HA网关,需要将其发布到外网(Internet)。因此,首先必须要配置HTTPS,确保数据传输的安全性。
为了节约成本,可以使用自签的SSL证书。或者,也可以选用官方推荐的免费TLS/SSL证书服务:Let’s Encrypt和Duck DNS integrating Let’s Encrypt。
制作自签的证书
证书的制作过程都是在树莓派上使用openssl
完成。
首先创建目录certs
,并进入该目录:
mkdir certs |
制作根证书
首先,需要创建根证书密钥,该密钥用于为证书签名。安全起见,该密钥不能泄露给其他人:
openssl genrsa -des3 -out rootCA.key 4096 |
该命令生成的Key默认使用密码保护,如果要取消密码保护,只需要移除选项-des3。
然后用根证书密钥制作根证书:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem |
如果需要使用苹果设备**macOS vs 10.15 / iOS 13 (or above)**,请使用以下命令制作根证书,区别是根证书的有效期只有 825 天:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 825 -out rootCA.pem |
制作服务器证书
请根据以下步骤,制作Home Assistant服务器的证书。
创建rootCA.csr.cnf
文件
touch rootCA.csr.cnf |
将以下内容复制-粘贴到文件rootCA.csr.cnf
:
# rootCA.csr.cnf |
创建v3.ext
文件
touch v3.ext |
将以下内容复制-粘贴到文件v3.ext
:
# v3.ext |
创建证书密钥hassio.csr
:
openssl req -new -sha256 -nodes -out hassio.csr -newkey rsa:2048 -keyout hassio.key -config <( cat rootCA.csr.cnf ) |
如果在Windows平台上运行该命令,需要注意-config参数后面rootCA.csr.cnf文件的路径地址。请参考以下例子:
openssl req -new -sha256 -nodes -out hassio.csr -newkey rsa:2048 -keyout hassio.key -config "C:\Program Files\Git\usr\bin\rootCA.csr.cnf" |
创建证书hassio.csr
:
openssl x509 -req -in hassio.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out hassio.crt -days 3650 -sha256 -extfile v3.ext |
如果需要使用苹果设备**macOS vs 10.15 / iOS 13 (or above)**,请使用以下命令:
openssl x509 -req -in hassio.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out hassio.crt -days 825 -sha256 -extfile v3.ext |
配置Home Assistant
将服务器证书和私钥重新命名为.pem格式:
rename hassio.crt fullchain.pem |
将证书复制到/PATH_TO_YOUR_CONFIG/ssl
目录:
这里需要注意的是,由于采用了Docker方式安装HA,没有权限访问/etc目录,所以,只能将证书复制到/PATH_TO_YOUR_CONFIG/ssl。
mkdir /PATH_TO_YOUR_CONFIG/ssl |
修改配置文件configuration.yaml
:
http: |
将Home Assistant发布到公网
由于本地网络没有公网IP地址,因此通过SSH Tunnel的方式,将Home Assistant网关映射到远端网络,并发布到公网上。
在HA网关上运行以下命令,该命令会将本地的8123端口映射到远端树莓派的10000端口。
autossh -f -M 0 -NR 0.0.0.0:10000:localhost:8123 pi@ivpn.asuscomm.com -p 30100 |
然后,创建计划任务,每次HA网关重启后,会自动执行以上命令。
crontab -e |
在远端路由器上,选择外部网络(WAN) - 端口转发 - 自定义设置 ,添加端口转发的条目。
服务名称:Home-Assistant |
iOS如何安装根证书
点击rootCA.pem
文件,安装根证书。
打开设置应用,找到已下载描述文件,点击安装,安装过程中需要输入手机密码。
安装完成后,需要在设置 - 通用 - 关于本机 - 证书信任设置中,启用安装的根证书。
Android如何安装根证书
重新命名rootCA.pem
文件为rootCA.crt
。
rename rootCA.pem rootCA.crt |
在Android设备上点击安装rootCA.crt
文件。
Mac如何安装根证书
打开终端工具,输入以下命令:
CERT="/path/to/my/cert/my-root.crt" |