在UniFi Controller如何匯入LetsEncrypt簽署的憑證?

Ubiquiti UniFi Controller 管理介面中的資訊相當豐富,但美中不足的是預設安裝所使用的是自簽憑證,所以第一次連線到UniFi Controller登入頁時,就常常會出現憑證不合法的錯誤訊息。如果使用 Chrome 可以用密技 thisisunsafe 關鍵字來跳過乎略這個錯誤訊息,但就是要多打一段文字,久了還是會有點麻煩。

免費的 LetsEncrypt 憑證常常是小資族的好朋友,像我家中有 NAS,也有小型網站對外服務時,免費的 LetsEncrypt 憑證就省了每年的一筆憑證採購費用,雖然三個月就要更新一次,但對於個人網站來說已經相當方便。

那有沒有辦法可以將NAS所申請下來的正式 LetsEncrypt 憑證匯入到 UniFi Controller 來使用呢?一般網路上的教學都是正常的申請憑證流程(產生 CSR,CA 在CSR 上加簽,然後再匯入網站憑證),找了一會兒終於找到一篇直接匯入 JAVA JKS KeyStore的教學 (Use Letsencrypt with Unifi Controller on Ubuntu),其實只需要參考最後的 Another Approach 即可,那我們就開始吧。

  • 匯出憑證

我使用的是 Synology 的 DS1819+,Synology 有提供 wildcard 的 DNS 註冊解析服務,而且完全免費,所以用他們家的免費 Domain 來申請憑證,一張憑證就可以提供給家裡各個服務都能共同使用。首先透過 NAS 匯出使用的 LetsEncrypt 憑證,在控制台–>安全–>憑證,然後選好從 LetsEncrypt 申請下來的那張憑證進行匯出。

  • 解壓縮憑證

匯出來以後會是一個 archive.zip,解開以後會有六個檔案,我們要使用的是 RSA 開頭的三個檔案。

  • 轉換憑證格式

從NAS取得的憑證格式是PEM,私鑰(RSA-privkey.pem)/憑證(RSA-cert.pem)/憑證鏈(RSA-chain.pem)都是獨立檔案,我們需要轉換為 PKCS12 的整合檔案,可以使用下列指令來進行轉換,另外憑證名字(紅字參數)請務必設定為 unifi。如果沒有 openssl 指令,請自行安裝。

openssl pkcs12 -export -in RSA-cert.pem -inkey RSA-privkey.pem -out "<預計產生出來的PKCS12憑證檔名路徑>" -name unifi -CAfile RSA-chain.pem -caname root

匯出時會詢問未來要打開金鑰庫檔案的密碼,請務必記住自己設定的密碼,後面匯入 UniFi Controller 的 KeyStore 時會需要敲入這個密碼。

  • 匯入 UniFi Controller

我並沒有添購 Cloud Key,也沒有任何具備 UniFi Controller 功能的設備(例如: UniFi Dream Machine / Pro),就只是單純利用 Windows VM 上面來跑 UniFi Controller 軟體。(或許後續可以來試試 Docker 版本的 UniFi Controller)。

觀察了一下,原來 UniFi Controller 使用的 KeyStore 預設安裝於 C:\Users\<使用者名稱>\Ubiquiti UniFi\data 目錄下的 keystore 檔案。為了避免損毀 UniFi 原生安裝的 keystore,匯入金鑰前請將 keystore 這個檔案預先備份一下。

接著就可以使用下列指令來將PKCS12憑證檔匯入 Java JKS KeyStore 中(其中 keytool 指令為 Java JRE 的指令,若發生找不到 keytool 指令,請在環境變數PATH中設定 <JAVA JRE>\bin目錄)。另外紅色字體的密碼,則是開啟 UniFi keystore 的密碼,請照著貼上即可

keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore "C:\Users\<使用者名稱>\Ubiquiti UniFi\data\keystore" -srckeystore "<前一步驟轉換出來的PKCS12憑證檔名路徑>" -srcstoretype PKCS12 -alias unifi

匯入時敲完前一步驟所設定開啟金鑰庫的密碼後,會提醒你已經有一個名為「unifi」的金鑰存在,請確認是否要進行覆蓋?當然選擇 Yes,如果沒有意外,金鑰就已匯入 UniFi Controller 所使用的 KeyStore 中。

  • 重新啟動 UniFi Controller

至此就可以重新啟動 UniFi Controller 了,啟動成功後,連上管理介面網頁,再點開瀏覽器網址前的鑰匙鎖頭圖示,應該就可以看到是正式的 LetsEncrypt 憑證了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料