如果覺得每次進入Web介面, 看到那個Not Secure訊息都有一點奇檬子不爽的感覺:
使用者有強迫症又覺得 "老子就是要看到那個greenbar才會爽" 的症狀下:
那麼可以自行匯入SSL憑證, 有幾種方案:
1. 花錢買頗貴的EV SSL憑證.
2. 使用let's encrypt免費憑證.
3. 家裡自建CA, 作為內網使用. 不需要對外, 使用自建CA申請憑證.
本篇將使用方案3作為匯入SSL憑證到Unifi Controller的操作. 首先我有了一個自建的CA:
所有的內部User都綁定在這個CA的domain下. 為了申請憑證, 這裡使用的Windows系統的做法, 我必須要產生CSR請求檔. 在Windows下可以使用幾種情況:
1. 使用certmgr申請
2. 使用其他工具申請, 例如DigiCertUtil, OpenSSL
3. 使用IIS的憑證工具申請
需要注意的是IIS申請的憑證不會帶SAN(Subject Alternative Name)資訊. 在有些瀏覽器會強制檢查這個欄位, 例如google chrome.
沒有帶入這個欄位依然會提示Not Secure.
這裡使用的DigiCertUtil產出CSR請求檔:
他可以額外填入SAN欄位, 這裡填入了兩種資訊:
storaid.local
unifi.storaid.local
在產出CSR申請檔後, 便要透過CA完成這個CSR請求生成SSL憑證. 這邊直接使用IIS的憑證工具完成CSR請求:
完成後, IIS的憑證工具便會多出一個unifi.storaid.local的SSL憑證. 並且自建的CA也會看到請求完成後的SSL憑證資訊.
確認SSL憑證相關欄位資訊, 並且檢查有沒有帶入SAN欄位:
接下來再利用IIS的憑證工具輸出成pfx檔並且帶密碼. pfx檔會附加private key訊息.
再來把這個pfx上傳到Unifi Controller裡, 由於我是OpenWRT掛載debian環境. 因此這邊使用了OpenWRT的atftp上傳pfx憑證檔. 為了方便, 我將它上傳到unifi存放憑證的路徑下:
上傳完成後, 便要進行對Unifi Controller的SSL憑證處理. 載入debian環境並且切換路徑到unifi存放憑證的位置下:
這裡看到我在該路徑下已經上傳了pfx憑證檔. 注意到一個名為keystore的檔案, 這是用來存放Unifi Controller的憑證相關資訊.
最初的開始, 鍵入以下的命令列出目前有的憑證資訊:
keytool -list -v -keystore keystore
這時它會要求輸入keystore的密碼. 在這邊必須輸入 aircontrolenterprise
完成後會看到列出Unifi Controller的built-in SSL憑證:
請注意它的別名(alias)是unifi. 再來要將pfx憑證檔匯入到keystore, 使用以下命令:
keytool -importkeystore -destkeystore keystore -srckeystore unifi.storaid.local.pfx -srcstoretype PKCS12 -srcstorepass unifi
-srcstorepass參數後面接的是pfx檔設定的密碼. 這邊設定為unifi.
在匯入憑證的過程中, 他會要求輸入keystore的密碼(aircontrolenterprise).
完成操作後, 在使用keytool -list -v -keystore keystore列出相關憑證資訊來查看是否存在pfx憑證檔資訊:
可以發現確實出現所期望的憑證資訊. 只是有一個問題就是別名(alias)的長相很難看, 對人來說是一串無意義的英文數字雜湊代碼.
因此需要進行別名(alias)的修改, 使用以下命令:
keytool -changealias -keystore keystore -alias [alias of privateKey goes here] -destalias [new_alias_name]
可以看到我將別名(alias)修改為unifi_storaid_local, 不過在這個過程中它會要求輸入兩次密碼.
第一次為keystore的密碼(aircontrolenterprise).
第二次為pfx憑證檔設定的密碼, 當初設定為unifi.
完成別名(alias)修改的操作後, 必須重新設定該匯入的pfx憑證的私鑰密碼. 使用如下命令: keytool -keypasswd -alias [alias_name] -keystore keystore
在這個過程中, 它會要求輸入幾次密碼.
第一次為keystore密碼(aircontrolenterprise)
第二次為pfx原本設定的密碼(unifi)
第三次設定新密碼, 必須設定為 aircontrolenterprise
第四次輸入確認密碼, aircontrolenterprise
在這個步驟完成後, 在原本可以使用 shutdown -r now 來重啟始設定生效. 不過我這邊是OpenWRT去掛載, 省得麻煩直接對OpenWRT做reboot. reboot完成後, 直接使用瀏覽器測試匯入SSL憑證所申請的domain name. 在這個案例使用unifi.storaid.local.
有Greenbar, 有SAN欄位, 瀏覽器顯示Secure. 確認SSL憑證匯入已經成功了.