Huang

Huang

開啟 OpenWRT 配置 LuCI SSL 證書

Openwrt 提供了一個 luci 管理界面可以通過圖形化的方式進行配置管理。我們通過 lan 網地址 http 訪問 luci 界面,會有一個提示不安全的鏈接,一般瀏覽器提供了一個跳過選項可以忽略警告。

但是當我們通過 wan 口地址訪問 luci 界面時,新版的 chrome 會強制拒絕訪問 http 不安全的鏈接,如果網址不支持 https 訪問頁面就會無法打開,從而我們就無法通過外網訪問 luci 界面了。

首先注意如果想要從 wan 口通過訪問 luci 界面,需要配置防火墻放行,具體參考:https://blog.niekun.net/archives/1818.html

然後我們給 luci 配置一個 ssl 證書,這樣 chrome 瀏覽器就會放行了。

首先安裝相關程序:

opkg update && opkg install openssl-util luci-app-uhttpd 

以上我們安裝了 openssl 套件和 uhttpd 的 ui 配置接口,可以圖形化的方式配置 uhttpd。

下面我們來生成需要的 ssl 證書文件。

首先創建文件 etc/ssl/myconfig.conf

[req]
distinguished_name  = req_distinguished_name
x509_extensions     = v3_req
prompt              = no
string_mask         = utf8only
 
[req_distinguished_name]
C                   = US
ST                  = VA
L                   = SomeCity
O                   = OpenWrt
OU                  = Home Router
CN                  = luci.openwrt
 
[v3_req]
keyUsage            = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage    = serverAuth
subjectAltName      = @alt_names
 
[alt_names]
DNS.1               = luci.openwrt
IP.1                = 192.168.1.1

可以修改 C (country), ST (state), L (location), O (organization), OU (organization unit) 為你想要的內容。

CN 和 DNS.1 必須是一樣的地址,它們表示此證書代表的域名,和 IP 是對應的。如果配置了 luci 界面地址的 hosts,這裡就可以定義為對應的域名。之後我們就可以通過訪問這個域名來訪問 IP。

IP.1 就是 luci web 地址,設置為對應的地址即可。

配置文件保存後返回 ssl 目錄:

cd /etc/ssl 

執行下面的命令:

openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout mycert.key -out mycert.crt -config myconfig.conf 

會自動在當前目錄下創建 mycert.key 和 mycert.crt 文件。

然後我們先通過 lan 內網訪問 luci web 界面,在頂部我們可以看到多了一個 services 菜單,點擊其中的 uhttpd 進入配置界面,在 HTTPS CertificateHTTPS Private Key 中分別上傳 crt 和 key 文件:

4104361265[1]

然後點擊 save and apply。

重啟 uhttpd 服務:

/etc/init.d/uhttpd restart 

此時我們使用 chrome 通過 wan 口地址訪問 luci web 界面,依然會提示證書有問題,但是有選項鏈接可以正常進入了。

下面我們將剛才生成的 ssl 文件加入 backup 列表。默認情況下 /etc/config 下的文件會自動進行備份。

我們進入 System → Backup/Flash Firmware,點擊 configuration 欄,然後將 /etc/ssl/mycert.crt
/etc/ssl/mycert.key 加入列表中,點擊 save 即可。

之後我們生成的備份就會包含這些文件。

取消強制 https 轉換#

默認情況下 uhttpd 的設置會打開 Redirect all HTTP to HTTPS:

2983483505[1]

此時訪問 http 頁面也會自動重定向到 https 頁面。在本地訪問沒有什麼問題,但是經過測試使用 frp 進行內網穿透將 luci 頁面從外網訪問時,會出現 redirect too many times 報警,也就是無限重定向了。

因為我的 frp 配置的是 http to https,這樣就需要 frp 訪問的本地 http 服務而不是 https。

解決方法就是取消勾選 Redirect all HTTP to HTTPS 這一選項,然後重啟路由就可以正常通過 frp 訪問 luci 頁面了。

如果不想取消 https 重定向,也可以通過 frpc 的 plugin_http2https 插件將本地 https 轉為 http 然後轉發給 frps。具體參考教程:https://blog.niekun.net/archives/539.html

參考鏈接#

How to get rid of LuCI HTTPS certificate warnings

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。