本文以博主家庭网络为例,介绍在旁路由上配置CloudFlare动态域名并安装ACME证书,实现远程访问的方法。
设置动态域名的前提:光猫拨号后获取的必须是公网地址。
家庭网络主路由使用华为P812E光猫,配置为路由模式。负责拨号上网,同时为AP提供Poe供电。几个面板组成Mesh网络,由一台r6s旁路由负责分配DHCP,并提供其他服务。
一、P812E开启端口转发
进入P812E光猫Web设置界面,转到高级设置>转发规则>IPv4端口映射,添加一条映射规则。由于运营商一般都将公网常用的80、443、8080等端口屏蔽,我们选择一个可用的端口进行映射。本示例使用9443端口,将WAN接口上的9443端口映射到OpenWrt旁路由443端口上,192.168.18.2为旁路由的LAN地址。
点击应用,现在就可以使用https://wan ip:9443端口访问OpenWrt。
二、设置动态域名
1、在CloudFlare上,添加一条动态域名记录,这里使用了一个二级域名,IPv4地址输入临时地址(客户端配置好动态域名程序后会自动更新地址),关闭代理选项,点击保存。
2、在OpenWrt上,通过软件包安装ddns-go插件,如果软件包中没有这个插件,可以去这里或这里下载最新的ipk程序并手动安装。安装完成后,转到服务>ddns-go,启用ddns-go服务。
浏览器输入LAN IP:9876地址打开DDNS-GO设置页面,设置参数如下图所示,本教程使用CloudFlare管理的域名,只需要输入DNS的令牌和域名信息即可。其他服务商请参考设置说明。
设置完成点击左上方的Save按钮,保存配置。实时连接信息可以点击右上方的日志进行查看。如果设置无误,那么在CloudFlare上添加的记录应该更新了光猫WAN接口公网地址。
浏览器输入https://test.pfchina.xyz:9443,应该可以打开OpenWrt旁路由登录界面。由于没有配置证书,会提示连接不安全。
三、配置ACME证书
详细安装说明请参考这里。
安装acme.sh
进入OpenWrt的后台,安装acmd.sh,标红部分请替换为用于注册acme的邮箱。
curl https://get.acme.sh | sh -s email=[email protected]
如果有奇奇怪怪的问题无法成功安装,可以先挂个代理。
配置证书
由于80和443端口无法使用,只能使用手动dns方式在域名上添加一条txt 解析记录, 验证域名所有权。Cloudflare Domain API提供了两种自动颁发证书的方法。
使用全局API密钥
使用Cloudflare账户的全局API密钥和域名注册邮箱替换下面标红部分,并在OpenWrt执行这两条命令:
export CF_Key="key"
export CF_Email="[email protected]"
使用DNS区域令牌
用上面获取的数据替换下面标红部分,并在OpenWrt上执行这三条命令:
export CF_Token="token" export CF_Zone_ID="zone" export CF_Account_ID="id"
两种方法使用一种即可。添加完txt解析记录后,执行以下命令申请证书,标红部分为设置的域名。
/root/.acme.sh/acme.sh --issue --dns dns_cf -d test.pfchina.xyz -d www.test.pfchina.xyz
在申请证书之前,建议先关闭代理。申请证书需要一点时间,请耐心等待。申请成功以后将会出现以下信息:
/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.cer /root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.key
证书的有效期为三个月,acme.sh安装程序添加了定时任务,到期会自动更新证书。
四、修改OpenWrt配置文件
config uhttpd 'main' list listen_http '0.0.0.0:80' list listen_http '[::]:80' list listen_https '0.0.0.0:443' list listen_https '[::]:443' option redirect_https '1' option home '/www' option rfc1918_filter '1' option max_connections '100' option cert '/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.cer' option key '/root/.acme.sh/test.pfchina.xyz_ecc/test.pfchina.xyz.key'
执行命令,重启uhttpd。
/etc/init.d/uhttpd restart
五、检查测试
浏览器输入https://test.pfchina.xyz:9443,检查证书是否生效,是否挂锁成功。
我没有DDNS-go 只有动态DNS 跟你的配置差不多 之做到了 没有https的url能进去 动态DNS 加SSL需要CA认证 写的 我像你做的acme.sh 也安装了 配置了配置了 也用命令重启了 uHTTP、还是小锁头没有
检查证书是否是申请成功了