使用自簽發 SSL 憑證進行本地 HTTPS 開發
在本地 Web 開發與測試時,模擬生產環境中的 HTTPS 連線相當重要。雖然自簽發的 SSL 憑證不會被公開憑證簽發機構(CA)信任,但在本地開發環境下,它們是實現 HTTPS 的便捷方案。本文將詳細說明如何使用 ServBay 內建的 OpenSSL 工具,產生高效且安全的橢圓曲線加密(ECC)自簽發 SSL 憑證,並在 ServBay 中設定至您的本地網站。本範例將以 servbay.demo
作為示範域名。
妥善配置 HTTPS,有助於您充分在本地環境測試網站於安全連線下的各項行為,例如混合內容警告、Cookie 安全標誌等。
概述
自簽發憑證是由您自行建立並簽署的 SSL 憑證,而非由受信任的第三方 CA 頒發。常見適用場景包括:
- 本地開發環境
- 內部測試伺服器
- 不涉及敏感資料的內部應用
ServBay 已整合 OpenSSL 工具,讓您能直接在終端快速產生憑證檔案。
前置條件
- 已安裝並啟動 ServBay。
- 具備基本命令列操作經驗。
步驟一:產生自簽發 ECC SSL 憑證
我們建議優先使用 ECC 憑證,因其相較傳統 RSA 憑證,能在提供相同安全強度下,具備更小密鑰、更快簽名與驗證速度,以及更低的運算資源消耗。
以下為產生自簽發 ECC SSL 憑證的步驟:
產生 ECC 私鑰(Private Key)
開啟您的終端機程式,執行下列指令以使用
prime256v1
曲線產生 ECC 私鑰檔servbay.demo.key
。shopenssl ecparam -genkey -name prime256v1 -out servbay.demo.key
1openssl
: 呼叫 OpenSSL 工具。ecparam
: 用於處理 ECC 參數。-genkey
: 產生金鑰。-name prime256v1
: 指定使用的 ECC 曲線名稱,prime256v1
(NIST P-256)為常用且安全的曲線。-out servbay.demo.key
: 指定輸出的私鑰檔名稱。
產生憑證簽署請求(CSR)
使用剛才生成的私鑰檔
servbay.demo.key
,建立一個憑證簽署請求(CSR)檔案servbay.demo.csr
。CSR 內包含您欲於憑證呈現的各項資訊(如域名、組織名稱等),並以您的私鑰簽署。shopenssl req -new -key servbay.demo.key -out servbay.demo.csr
1執行指令後,OpenSSL 會提示輸入一系列資訊來填寫 CSR。請依照提示填寫,其中最重要的是 “Common Name (e.g. server FQDN or YOUR name)” 欄位,此處必須填寫您本地網站所用之域名(如
servbay.demo
),其它欄位可依實際情況或示例填寫。以下為範例輸入過程:
Country Name (2 letter code) [AU]:CN # 國家代碼,例如 CN(中國) State or Province Name (full name) [Some-State]:Hong Kong # 省/州 Locality Name (eg, city) []:Kowloon # 城市 Organization Name (eg, company) [Internet Widgits Pty Ltd]:ServBay # 組織名稱 Organizational Unit Name (eg, section) []:Development # 部門/單位名稱 Common Name (e.g. server FQDN or YOUR name) []:servbay.demo # **重要:填入您的本地域名** Email Address []:[email protected] # 聯絡信箱 Please enter the following 'extra' attributes to be sent on in your certificate request A challenge password []: # 可留空 An optional company name []: # 可留空
1
2
3
4
5
6
7
8
9
10
11產生自簽發憑證
最後,使用上述產生的 CSR(
servbay.demo.csr
)與私鑰(servbay.demo.key
),生成自簽發的 SSL 憑證servbay.demo.crt
。此例設置憑證效期為 365 天。shopenssl x509 -req -days 365 -in servbay.demo.csr -signkey servbay.demo.key -out servbay.demo.crt
1openssl x509
: 用來處理 X.509 格式憑證。-req
: 指定輸入為 CSR。-days 365
: 設定憑證有效天數為 365 天。-in servbay.demo.csr
: 指定 CSR 檔案。-signkey servbay.demo.key
: 使用本私鑰簽署憑證(自簽發)。-out servbay.demo.crt
: 指定輸出的憑證檔名稱。
完成上述程序後,您將於當前目錄取得三個檔案:
servbay.demo.key
(私鑰)、servbay.demo.csr
(憑證簽署請求)、servbay.demo.crt
(自簽發憑證)。
(圖片說明:於終端執行 OpenSSL 指令產生憑證檔案的過程)
步驟二:於 ServBay 配置自簽發 SSL 憑證
產生憑證檔後,需將其放置於 ServBay 可讀取的位置,並於網站設定內指定這些檔案。建議將 SSL 憑證統一置於 /Applications/ServBay/ssl
目錄下,每個域名獨立子資料夾,方便統一管理。
搬移憑證檔至指定目錄
按照 ServBay 建議的資料結構,將上述檔案移至
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/
。如資料夾尚未存在,請先建立。sh# 若目錄不存在,請先建立 mkdir -p /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # 搬移檔案 mv servbay.demo.key /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ mv servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # CSR 檔通常非必需,但可一併備份存放 mv servbay.demo.csr /Applications/ServBay/ssl/private/tls-certs/servbay.demo/
1
2
3
4
5
6
7
8/Applications/ServBay/ssl/
:ServBay 預設的 SSL 相關檔案目錄。private/tls-certs/
:建議用於存放私有 TLS/SSL 憑證的子資料夾。servbay.demo/
:每個域名獨立子資料夾,便於多網站證書管理。
打開 ServBay 管理介面
啟動 ServBay 應用並進入管理介面。
新增或編輯網站設定
於管理介面選擇 網站(Websites) 分頁。如尚未建立
servbay.demo
,請點選 新增網站(Add Website)。如已存在,請選擇該網站設定進行編輯。設定 SSL/HTTPS
進入網站設定詳情,在 SSL/HTTPS 或相關設定區域作後續調整。
憑證來源選擇為 Custom
於 SSL 憑證簽發方式中,選擇 Custom(自訂憑證)。
指定憑證檔案路徑
將前面移至 ServBay SSL 目錄下的檔案,於欄位中正確指定:
- Certificate Key File(憑證私鑰檔案): 輸入或瀏覽至
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.key
- Certificate File(憑證檔案): 輸入或瀏覽至
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.crt
- Certificate Key File(憑證私鑰檔案): 輸入或瀏覽至
設定域名
請確保網站設定中的 Domain(域名) 欄位為
servbay.demo
。儲存並套用設定
儲存設定變更。ServBay 預設會提示您套用變更,通常需重啟相關 Web 伺服器(例如 Caddy 或 Nginx)。確認並套用。
(圖片說明:於 ServBay 管理界面設定自訂 SSL 憑證路徑)
驗證 HTTPS 配置
設定完成後,可於瀏覽器存取 https://servbay.demo/
,檢查是否部署成功。
由於本次使用自簽發憑證,而此憑證並非公眾 CA 所簽發,因此瀏覽器將顯示安全警告,指出憑證未受信任或存在隱私風險。這是正常現象。
(圖片說明:瀏覽器連線自簽發憑證網站時的警告畫面)
您可以選擇忽略警告並繼續(通常有「詳細資料」或「繼續造訪」選項),亦可將此自簽發憑證匯入作業系統信任憑證存放區,以避免每次看到警告。
(圖片說明:於瀏覽器檢視自簽發憑證的詳細內容)
透過檢查憑證資訊,能確認瀏覽器已正確載入您設定的 servbay.demo
憑證。
注意事項
- 私鑰安全: 您的私鑰檔(
.key
)極為敏感,務必妥善保存,切勿外洩。於本地開發環境下,請保證權限僅允許 ServBay 使用者存取。 - 檔案路徑: 請確保於 ServBay 設定內指定的檔案路徑完整且正確。
- 域名對應: 憑證產生時 Common Name(CN)需與 ServBay 網站設定的域名完全一致,否則瀏覽器將回報名稱不符的錯誤。
- 憑證效期: 自簽發憑證效期取決於產生時的
-days
參數,過期後需重新產生並配置。
相關主題與替代方案
雖然自簽發憑證適用於基本的本地 HTTPS 測試,但如您希望本地開發時更貼近平常實際信任 CA,可考慮以下 ServBay 解決方案:
- ServBay User CA: ServBay 提供專用的用戶 CA 工具。只需將 ServBay User CA 匯入作業系統信任憑證存放區,再利用其簽發網站憑證,您的所有本地網站將被主機與瀏覽器信任。此舉有助測試 OAuth 回呼、Webhooks 等場景對憑證信任的需求。
- ServBay Public CA: ServBay 亦提供公開 CA 功能,能為本地域名簽發且自動系統信任的憑證。
這些方案更適用於多本地網站管理,比起單純自簽發流程更為便利。詳情請參閱 ServBay 官方文件。
常見問題(FAQ)
- 問:為什麼已產生憑證,瀏覽器仍顯示不安全?
- 答:自簽發憑證並未被公開 CA 信任,瀏覽器基於安全考量必定出現警告,屬正常現象。如需移除警告,請將該憑證或其簽發 CA(例如 ServBay User CA)加入至作業系統的信任憑證存放區。
- 問:可以用 RSA 憑證嗎?
- 答:可以。OpenSSL 同樣支援產生 RSA 憑證。您可用
openssl genrsa -out servbay.demo.key 2048
產生 RSA 私鑰,後續步驟同前。但我們仍建議使用 ECC 憑證以獲得更佳效能。
- 答:可以。OpenSSL 同樣支援產生 RSA 憑證。您可用
- 問:如何將自簽發憑證加入 macOS 信任存放區?
- 答:請開啟「鑰匙圈存取」(Keychain Access)App,選擇「系統」或「登入」鑰匙圈,將
.crt
檔案拖曳進去。於匯入之憑證雙擊開啟,在「信任」展開後,將「安全套接字層(SSL)」設為「永遠信任」。關閉視窗並依提示輸入密碼。最後重啟瀏覽器即可。
- 答:請開啟「鑰匙圈存取」(Keychain Access)App,選擇「系統」或「登入」鑰匙圈,將
總結
本文說明了如何透過 ServBay 內建 OpenSSL 工具產生自簽發 ECC SSL 憑證,並將其於本地網站設定中套用。雖然自簽發憑證多用於本地開發與測試,但此流程有助於深入理解 HTTPS 運作及於本機啟用安全連線。若欲簡化本地信任管理,建議進一步了解 ServBay 的 User CA 與 Public CA 相關功能。希望這些實作步驟能協助您優化本地 Web 開發流程。