在免费好用的IPv6之远程管理路由器-OpenWrt上uhttpd的使用介绍_123-wqy的博客-CSDN博客_openwrt uhttpd这篇文章的最后,我们已经可以使用80、443端口从路由器内外网的IPv6地址对路由器的WEB界面进行访问。
但是,考虑外网访问场景下的安全性问题,为密码等敏感数据的传输进行加密是很有必要的,我们通常可以使用TLS协议加密浏览器传输的数据,即将“HTTP://”改成“HTTPS://”,从访问80端口改为443端口。
不过,当我们直接修改时会发现,浏览器提示我们“证书不受信任”,这是因为OpenWrt上的uhttpd服务默认使用一个自签名的证书,而TLS的证书安全性来自权威的根证书机构,自己“又当运动员、又当裁判”的行为自然不受信任。
因此,我们可以使用互联网上受广泛信任的根证书颁发机构为我们的域名颁发证书,但一般而言,大部分机构都是面向企业和机构颁发付费证书的,如CSDN使用的DigiCert证书如下:
但我们的网站显然不必如此大费周章,目前网上广泛使用的是Let's Encrypt的免费证书服务,Let's Encrypt使用文件验证的方式对网站的所有权进行验证,且证书有效期为3个月,由于其支持ACME自动续期,因此对于一般的服务器而言,3个月的有效期并不是什么大问题,但考虑到路由器这样的嵌入式设备,我们希望直接获取到证书文件并部署即可,无需运行额外的程序。
为此,我们可以选择国内的FreeSSL网站,使用TrustAsia颁发的证书,其有效期可达1年,且一般仅需DNS验证即可,这对于我们使用动态DNS域名的情况来说非常合适。
接下来以dynv6的DDNS域名为例,申请并部署一个https证书。
首先打开FreeSSL网站
这里选择中间的“双域名(有效期:1年)”选项,并输入DDNS的域名,点击进入下一步
随后输入我们的邮箱地址,按照网站最新的使用规则,此时需要注册一个账号,这样便可以在证书到期前得到及时的邮件通知。
这里推荐选择ECC类型的证书,可以在协议握手时减少开销;若没有安装离线证书管理客户端(KeyManager),可以使用浏览器生成的方式获得密钥;验证类型则保持DNS验证不变。
之后我们会下载到一个以域名命名的压缩包文件,其中包含私钥与说明,需要注意的是,对于TLS协议而言,私钥是至关重要的,一旦私钥泄漏则意味着加密失效,而证书则是可以任意传递的。
此时我们需要继续验证才能够获得最终的证书,此时网页会弹出以下验证界面,若关闭了此页面也没有关系,我们可以在右上角的“控制台”——“订单列表”中找到未完成验证的订单。
接下来回到DDNS提供商的配置网站,此处以dynv6为例介绍。
登录后打开域名的配置界面,如下。
按照要求,我们添加一条CNAME记录,这条记录可以帮助证明我们对这个子域名拥有控制权,防止冒用https证书的情况。
复制信息并填写完成后我们点击“Save”保存修改,但此时网页提示我们的输入有误,如下所示:
提示信息为“Data必须为有效的主机名”,这是为何呢?其实,这并不是我们填写有误,而是dynv6网站的问题,我们可以先删除“Data”字段中的数据,随意输入一些值,例如“123”等等,点击保存即可。
可以看到已经保存成功,这样的显示符合CNAME的“重定向”作用。
接下来点击“edit”,将“Data”字段修改为我们需要的域名。
此时便可以正常保存了。
我们可以借助MySSL网站的DNS工具确认域名解析情况
确认无误后即可在订单页进行验证。
此时,我们会发现显示结果为“不匹配 (CNAME 值不匹配)”。
当然,这并不是网站出了问题或更改没有同步,而是涉及到域名的结构和解析方式。
具体到这个问题上来说:我们添加CNAME记录时在“Data”字段填写的是形如“aa.bb.cc.xx.com”的记录,这会导致解析结果有误,我们应当在数据的最后添加一个英文句号,即“.”,构成“aa.bb.cc.xx.com.”的形式即可,这样便可以解析成功。
之后回到订单页面,点击“验证”即可(可能会出现报错的情况,多次点击后即可完成)。
点击“获取”即可下载证书,得到的压缩包文件中有两个文件,分别是证书链文件(.pem)和对应的私钥文件(.key),接下来我们把它们部署到路由器上。(提示:要在Windows上查看这张证书,可以将.pem文件修改为.crt文件,双击打开即可)
未完待续...