Skip to content

讓 Synology NAS 也使用遠端主機上的 wildcard SSL 憑證

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

不過由於有一個子網域是指向我放在家裡的 Synology NAS,在 DSM 系統裡面雖然也可以取得 Let’s Encrypt 憑證,但是目前並不能獲得 Wildcard 憑證。而我在 NAS 上面因為架設了一些服務,導致連到這台 NAS 的子網域越來越多,每個網域都去要一次憑證實在很麻煩,也有可能不小心達到 Let’s Encrypt 的要求次數上限,所以就研究出了一個把 linode 主機上的憑證複製到 NAS 來使用的方法。

 

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

接下來到 DSM 的「控制台 → 安全性 → 憑證」裡面,選擇「新增 → 新增憑證 → 匯入憑證」,會出現如下圖畫面,選擇剛剛下載的兩個檔案並對應到正確的選項,再按確定。

 

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

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

 

首先,我們一定要先把剛剛匯入的憑證,在 DSM 的視窗裡面改為「預設憑證」,才可以進行接下來的動作。

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

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

 

接下來,請在 NAS 的終端機裡面下指令 hash=$(cat "/usr/syno/etc/certificate/_archive/DEFAULT"),跟 folder="/usr/syno/etc/certificate/_archive/"$hash,這兩個指令第一個是獲得預設憑證的資料夾名稱,第二個指令就是獲得預設憑證的完整資料夾位置。

ls $folder 一下,會發現有三個檔案,cert.pem、fullchain.pem、privkey.pem,明明剛剛我們只有匯入兩個檔案啊!不過其實 cert.pem 跟 fullchain.pem 是完全一樣內容的,所以實際上還是只有兩個檔案。

再分別下指令

帳號跟網址自己換成你自己的,要注意的是,遠端的 private.key 在 NAS 應該要叫 privkey.pem,遠端的 fullchain.cer 在 NAS 要叫 fullchain.pem,並且複製一份叫 cert.pem。確定可以 scp 成功之後,最後我們要做自動化。

 

回到 DSM 的介面,選擇「控制台 → 任務排程表 → 新增 → 排程任務 → 使用者定義指令碼」,帳號選擇 root,排程時間自己設定,重點是指令碼,請改成

網址、路徑一樣要改成你自己的,儲存指令後馬上執行,如發現檔案有更新成功,那就 OK 了!

以上就是在 NAS 硬用遠端 linux wildcard SSL 憑證並自動更新的方法。

發佈於軟體教學

目前沒有留言

發表迴響