解決連線到ASUS路由器的OpenVPN伺服器時,因TLS驗證錯誤無法連線的問題

昨天我家的ASUS RT-AC1500G PLUS突然無緣無故就自己恢復出廠預設,連帶其中的OpenVPN也必須重新配置。但好不容易配置好OpenVPN之後,要用手機測試連線,結果就因為TLS驗證錯誤而罷工。

後來我在手機端的OpenVPN(我裝的是這個,下文會說明)設定關閉TLS驗證…成功!因此確定問題就出在TLS驗證上。

雖然確定了問題所在,可是這個問題是我第一次遇到,所以一時毫無頭緒。總之就是一直鬼打牆,死活就是連不上。

最後是找到了這篇文章,根據文中的方法,終於讓OpenVPN恢復正常了。下面大概介紹一下怎麼做:

  1. 點此下載最新版的easy-rsa;點進去後找右邊Release(手機版是往下拉),選latest的下載
    一般選win64的即可(64位元Windows);win32是32位元的。
  2. 解壓縮前一步下載的壓縮檔,得到EasyRSA-(版本)資料夾
  3. 打開後,雙擊執行EasyRSA-Start.bat,執行EasyRSA
  4. 然後依序執行下面這些指令:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-full server nopass
./easyrsa build-client-full client nopass
./easyrsa gen-dh

之後就會在EasyRSA資料夾下產生一個pki資料夾,裡面就是前面產生的憑證。

我們要用的檔案有這些:

  • pki\ca.crt:CA憑證
  • pki\issued\server.crt:OpenVPN的伺服器憑證
  • pki\private\server.key:伺服器憑證對應的私鑰
  • pki\dh.pem:Diffie Hellman 參數
  • pki\issued\client.crt:OpenVPN的用戶端憑證
  • pki\private\client.key:用戶端憑證對應的私鑰

接著登入ASUS路由器的後台(網址列貼上router.asus.com,打路由器的IP亦可),依序點選VPN→切換到OpenVPN→開啟OpenVPN伺服器,然後點選套用本頁面設定。這一步是開啟路由器的OpenVPN伺服器

然後在VPN詳細設定切換為進階設定,找到驗證模式(預設為TLS)。點選旁邊的黃字「金鑰與驗證內容修改」(重點在這裡!)。

以下是各欄位要貼入的內容對照:

  • 驗證授權-貼入pki\ca.crt所有內容
  • 伺服器驗證-貼入pki\issued\server.crt最末端的內容(從—–BEGIN CERTIFICATE—–開始複製)
  • 伺服器金鑰-貼入pki\private\server.key所有內容
  • Diffie Hellman 參數-貼入pki\dh.pem所有內容

全都填入後即可點選儲存,最後點選套用本頁面設定即可。然後可以視需要新增登入帳號密碼。
全部設定完成後切換回一般設定,點選匯出OpenVPN設定檔。

這時候先別急著把設定檔匯入!因為這個設定檔沒有用戶端憑證與私鑰,需要自己加入(我遇到的問題就是出在這)。

使用記事本或其它類似軟體打開client.ovpn,找到<cert>段落,將pki\issued\client.crt最末端的內容複製進去;然後下面的<key>段落則是貼入pki\private\client.key所有內容,最後存檔。

最後將這個設定檔匯入OpenVPN用戶端,就可以順利連線到路由器的VPN了。

關於我使用的OpenVPN用戶端

前面我提到自己使用的OpenVPN用戶端,大家點進去之後應該會發現:這個不是OpenVPN官方出的App,而是第三方開發的。

我之所以會使用這個用戶端,有以下兩個原因:

  1. 官方App會卡在安全性過低而拒絕連線:出於這個原因,我只能找第三方的用戶端來pass掉這個限制。不過現在已經找到根本原因,就是因為憑證演算法選的是SHA-1。這次我順便把它改成SHA-256,從此不論是官方或第三方都能愉快連線了。
  2. 支援手機的快速面板:我的手機是三星的A13,其中一個我覺得很方便的功能就是快速面板,可以在上面放一些常用的功能按鈕。我用的OpenVPN第三方用戶端正好就支援這一功能,可以「一鍵連線VPN」。官方版就沒有這個功能。

發佈留言