HA文档 目录

  1. 主页
  2. HA文档
  3. HA文档
  4. 通过INTERNET访问
  5. HTTPS加密访问

HTTPS加密访问

这篇文章是系列文章的第3/4篇:

根据前两节的描述,我们已经在INTERNET可以通过http协议访问在内网中的HomeAssisant了,那怎么将其转变为Https呢?(HTTPS是加密的,这样流量通过INTERNET的时候,就不用担心被窃听了。)

将HTTP变成HTTPS,您需要两样东西:网站的数字证书,以及对应的私钥文件。只要将这两样东西配置在HomeAssistant的配置文件中,就可以通过HTTPS访问了。
你可以这样简单的理解:

  • 网站的数字证书——一个公开的电子文件,上面明确你对这个域名的拥有。
  • 私钥文件——你拥有私钥文件,就可以证明你是这个数字证书的拥有者。

基于这个社会的信用体系,网站的数字证书不可能自己生产(自己生产了别人也不认),必须由数字证书颁发机构颁发。大多数数字证书颁发机构是商业化运作的,但也存在免费的服务。在这里,我们以一个免费的数字证书服务Lets_encrypt为例,说明在HomeAssistant中如何配置获取和配置数字证书。

作为一个数字证书颁发机构,当颁发给你某个域名的网站数字证书的时候,Lets_encrypt必须要你证明你是这个域名的合法拥有者。它提供了两种证明方法:在对应的域名记录中,你能力根据要求添加一段指定的文本;或者,在域名对应的服务器上,你有能力根据要求创建一个INTERNET能访问到的指定的内容。

在这里,我们展现两个不同的方式方法,来获得和配置Lets_encrypt颁发的网站数字证书(实际的配置您可以参照这两者,也可以触类旁通,基本原理清楚之后就能千变万化了)。

【通过certbot获得数字证书】

  1. 安装certbot(certbot不支持windows操作系统)
    访问网站https://certbot.eff.org,在首页您能获得在各种操作系统下的安装与配置方法。
    在一般情况下,可以通过下面的命令安装:
  2. 在路由器上配置了端口转发,将外网的80端口转发到本机的80端口
  3. 运行命令
    ./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org
    这条命令内部的执行过程是:

    • 生成证书请求文件发送给Lets_encrypt
    • Lets_encrypt返回一个随机的文件
    • certbot提供80端口的http服务能让INTERNET通过http://examplehome.duckdns.org/.well-known/acme-challenge/xxxxxxx访问到这个随机文件
    • Lets_encrypt确认到这个文件存在时,就颁发证书
    • certbot将证书与对应的私钥文件发在目录/etc/letsencrypt/中

    为了让运行HomeAssistant的系统用户能够操作这些文件,可能需要修改一下权限:
    sudo chmod 755 /etc/letsencrypt/live/
    sudo chmod 755 /etc/letsencrypt/archive/

  4. 配置HTTP组件

  5. 配置端口映射,从433端口到HomeAssistant的8123端口

此时,就可以通过https://examplehome.duckdns.org访问内网的HomeAssistant了。

【通过Crypt-LE获得网站数字证书】
为了充分理解过程的逻辑,我们再演示一下,如何通过DNS挑战应答的方式获得证书(这种方式下,除了HomeAssistant需要的端口转发,就不需要像上面的过程中那样配置额外的端口转发了)。

  1. Crypt-LE
    与certbot类似,这也是一个与Lets_encrypt通讯获得证书的客户端程序,但其支持Windows
    注:类似的客户端有很多,参见:https://letsencrypt.org/docs/client-options/
  2. 执行命令(在非windows64位平台下,其中le64是le.pl或le32)
    le64 --key account.key --csr domain.csr --csr-key privkey.pem --crt fullchain.pem --domains "b1234.duckdns.org" --generate-missing --handle-as dns -live
  3. 打开浏览器,将下面url中输入参数转成您的域名和token,同时将上面图中红色部分黏贴到txt=后。
    https://www.duckdns.org/update?domains=b1234&token=a435b3a8-d6bd-XXXXX-fef0696707e&txt=Qyf5SieNk8kVubs2uodGZHhj2CKk3mGQ1UefvzipnS0
    看到浏览器中返回“OK”,如果失败返回“KO”。
    当配置成功后,您可以通过命令nslookup -q=TXT xxxxxxx.b1234.duckdns.org,看到这段txt出现在域名信息中(此处xxxxxx为任意字符)。
  4. 在命令窗口输入回车,继续执行
  5. 将获得的文件privkey.pem和fullchain.pem放在合适位置,同时在配置文件中配置。
  6. 在端口映射(将外网的443端口转发到HomeAssistant的8123端口)和动态域名解析设置完成的情况下,在浏览器访问https://b1234.duckdns.org

遇到问题了?快来学习免费在线课程吧,博学老司机在线答疑,找到更多志同道合的HA玩家一起进步

此文不允许转载,如需转载请与BD@hachina.io联系。

这篇文章对您有用吗? 1 1