讓 Synology 路由器 (RT2600) 也使用遠端主機上的 wildcard SSL 憑證

2020.03.21 更新:之前的教學沒有重啓系統服務,會導致讀到舊的證書而失效,目前已更正。

繼上一篇,讓 Synology NAS 也使用遠端主機上的 wildcard SSL 憑證之後,我在前幾個月也把家裡的路由器換成了 Plash Speed RT2600,因為想用到裡面的 VPN 服務的自訂網域,所以也需要匯入 SSL wildcard 憑證。由於 SRM 跟 DSM 稍稍不同,所以這次另外特別寫一篇讓 SRM 自動抓 wildcard 憑證的方法。

前情提要(其實就是複製貼上前一篇文章啦)

目前,我的 linode 主機裡面的所有子網域(*.hiraku.tw)都已經使用了 Let’s Encrypt 的 Wildcard SSL 憑證。

不過由於有一個子網域是指向我放在家裡的 RT2600,在 SRM 系統裡面雖然也可以取得 Let’s Encrypt 憑證,但是目前並不能獲得 Wildcard 憑證。為了統一在所有機器上面使用同一個憑證,所以就研究出了一個把 linode 主機上的憑證複製到 RT2600 來使用的方法。

首先,你要先下載遠端主機的 Wildcard 憑證到電腦中。因為每個人儲存憑證的位置都不一樣,所以這邊請務必換成你的路徑,以我來說,我下載了 /etc/nginx/ssl/hiraku.tw/fullchain.cer/etc/nginx/ssl/hiraku.tw/private.key 這兩個檔案。

接下來到 DSM 的「控制台 →服務 → 憑證」裡面,選擇「匯入憑證」,會出現類似下圖畫面(對,我很懶惰所以直接用 NAS 的圖片,反正看起來差不多),選擇剛剛下載的兩個檔案並對應到正確的選項,再按確定。

這時候我們就成功匯入遠端主機中的 SSL 憑證了。

不過這樣的話,由於 Let’s Encrypt 每 90 天就會過期一次,要常常匯入實在很麻煩,所以接下來,我們要讓 NAS 可以自動抓取遠端主機的憑證。

接著,你的 DSM 必須要可以用 SSH 進入,還有必須要用 root 帳號進去 SSH。要使用 root 進去 SSH 裡面稍稍麻煩。首先,你要把「admin」的帳號啟用(如果本來停用的話),然後用「root 帳號搭配 admin 的密碼」,登入進去 SSH 裡面。

用 root 登入後,我們先下指令 mkdir /root/.ssh,接著打開你的「電腦」的終端機,產生新的 SSH key。產生方式依照電腦作業系統有所不同,這部分也請去看其他網站的教學。之後,我們把建立的 key(id_rsa、id_rsa.pub)放到 NAS 的 /root/.ssh 底下。(溫馨提醒:RT2600 裡面可以用 vi,可以直接貼上內容存檔…),接著下指令 chmod -R 600 /root/.ssh,再下指令 cat /root/.ssh/id_rsa.pub,把出現的內容複製到遠端 linux 主機的 authorized_keys 裡面。

以上簡單來說,就是你要讓你的 RT2600 建立 SSH key 並且讓它可以免密碼連到遠端主機就是了啦!弄好之後記得在終端機裡面測試一下是否真的能 SSH 連上遠端主機。

接下來,請在 RT2600 的終端機裡面新增一個 shell script,放到 /root 底下,就叫做 fetch_cert.sh 好了

中繼憑證我是直接從 Let's Encrypt X3 直接複製下來的,確認可用。後面兩行帳號跟網址自己換成你自己的。然後 chmod +x 改權限之後跑一次,確定可以 scp 成功之後,最後我們要做自動化。

跟 DSM 不一樣的地方是,SRM 沒有 GUI 介面可以做自動化指令,所以我們要手動來做一次。如果你不會設定 crontab 的時間的話,可以用這個網站,我是設定每週三跟週日的半夜三點進行同步。

下指令 vi /etc/crontab,先改成每分鐘都跑一次看看,確定檔案確實可以更新,改好之後要執行 /usr/sbin/crond restart,因為不知道為什麼,SRM 的 crontab 不會自動抓到新的指令。確定 OK 之後再改成如下的每週三跟週日的半夜三點進行同步(或者你自己設定的時間)

如此一來,就可以自動同步 RT2600 的 SSL 憑證了!最後再把 SSH 帳號關掉(如有必要)就完成了。

發佈留言