使用openwrt配置https访问

发布于 2021-09-14  30 次阅读


uci默认使用http访问,用户名和密码明文传递,很不安全。为解决上述问题,可以使用https访问luci。

具体配置如下:

更新openwrt的插件包

1、SSH登录进入openwrt,

2、 安装更新所有插件包:opkg install

3、安装SSL资源包命令:opkg install luci-ssl-openssl curl ca-bundle(不要安装luci-ssl)

4、 将ssl证书(uhttpd.crt)及密钥文件(uhttpd.key)拷贝至/etc/目录下

5、 修改 /etc/config/uhttpd,确保“list listen_https '0.0.0.0:443'“有效。

  命令如下  :vi /etc/config/uhttpd

如图所示,添加红框里面的内容: list listen_https '0.0.0.0:443'
1.png

6、保存并退出,命令如下 (注意需要英文小写状态) 按下键盘 ESC键 之后按 :wq 再然后回车 ( 这里由英文状态的冒号: 加上小写英文 wq )

7、重新启动uhttpd,命令如下:/etc/init.d/uhttpd restart

8、这就完成了,之后登录OPenwrt 浏览器就出现 https://


网上还找到一个 比较复杂的方法.. 但是能自签 留存一下..

OpenWrt开启https访问(自签证书)

原作者地址:

OpenWrt开启https访问(自签证书) - 实用教程 - 高亚轩的BLOG (gaoyaxuan.net)

    1.安装依赖包

Bash复制

#软件名
luci-app-uhttpd                          
luci-i18n-uhttpd-zh-cn    
luci-ssl-openssl

    2.制作证书

        ssh路由器,使用openssl制作证书

    1.制作秘钥Bash复制

openssl genrsa 2048 > server.key

    2.根据私钥生成证书申请文件csrBash复制

openssl req -new -key server.key > server.csr

    该步骤中需要回答很多问题, 可以随便输入,注意最后一步会让你设置证书密码,一定不要设置,直接回车!

3. 生成证书Bash复制

openssl req -x509 -days 3650 -key server.key -in server.csr > server.crt

        -days : 证书的有效期,单位(天)

    最后把制作好的证书保存到本地(server.key,server.crt)

   ######################################################

    不通过页面ui改证书可以直接修改/etc/config/uhttpd这个文件的

  • option cert '/etc/server.crt'#证书在软路由上的具体位置
  • option key '/etc/server.key'#秘钥在软路由上的具体位置

    3. uhttpd使用证书

        装完luci-i18n-uhttpd-zh-cn后,刷新web界面服务下多出 uHtttpd选项

        按照下图配置

    4. 重启uhttpd服务
Bash复制

service uhttpd restart

        然后刷新web界面, 你会发现现在已经是用的https了,(因为是我们自签的证书,所以浏览器是不信任的,具体如何让浏览器信任字签证书自行百度)

        2020-11-14 补充: 

    页面打不开的解决办法: 

        我保证我写这篇文章的时候,按照我写的步骤正确配置是可以成功打开页面的,只是有些应用不支持https可能没办法正常使用.

        1. 清空浏览器缓存再试试

        2. 重启下uhttpd服务: /etc/init.d/uhttpd restart

        3. 重启下软路由系统

    页面打不开的还原办法: 

        页面可以打开的情况下取消https只需要点击上图删除证书和密钥的配置  然后  保存应用Bash复制

vi /etc/config/uhttpd

     把文件中 config uhttpd 'main' 下的option cert和option key 开头的这两行直接删掉Bash复制

#这行千万不要删
config uhttpd 'main'
        option cert '/etc/uhttpd.crt'#删这行
        option key '/etc/uhttpd.key'#删这行

然后重启下uhttpd服务
Bash复制

/etc/init.d/uhttpd restart

要是还打不开就重启下系统, 删除下浏览器的缓存在试试.

BUG问题

,进路由器后台突然出现错误

如下所示:

/usr/lib/lua/luci/dispatcher.lua:533: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
[C]: in function 'pairs'
/usr/lib/lua/luci/dispatcher.lua:533: in function 'createtree'
/usr/lib/lua/luci/dispatcher.lua:201: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:168: in function </usr/lib/lua/luci/dispatcher.lua:167>

用ssh连接openwrt的主机,输入

rm -r /tmp/luci-indexcache

即可进入后台