要讓瀏覽器信任自簽名的 CA(認證機構)證書,我們需要將這個 CA 證書導入到瀏覽器的信任證書庫中。具體來說,這個 CA 證書將充當信任根證書(Root Certificate),瀏覽器信任后,它就會信任由該 CA 簽發的其他證書。
1. 生成 CA 根證書
首先,我們生成一個自簽名的 CA 根證書,用于簽署其他服務器證書。
使用 OpenSSL 生成 CA 根證書
假設我們使用 OpenSSL 生成 CA 根證書:
# 生成 CA 私鑰
openssl genpkey -algorithm RSA -out myCA.key -pkeyopt rsa_keygen_bits:2048
# 生成自簽名的 CA 證書,有效期為 10 年
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 -out myCA.pem
myCA.key:CA 的私鑰,用于簽署其他證書。myCA.pem:CA 的自簽名證書,可以導入到瀏覽器的信任證書庫。
在執行此命令時,你會被要求提供一些信息(如國家、組織、Common Name 等),這些信息將用于 CA 證書的主體(Subject)。
2. 在瀏覽器中導入 CA 根證書
要讓瀏覽器信任此 CA 證書,需要將 myCA.pem 導入到系統或瀏覽器的證書管理器中,步驟可能因操作系統和瀏覽器不同。
在 Windows 中導入證書
- 雙擊
myCA.pem文件,打開證書導入向導。 - 選擇“本地計算機”作為存儲位置,然后繼續。
- 將證書安裝到“受信任的根證書頒發機構”。
- 完成導入,瀏覽器將信任該 CA 證書。
在 macOS 中導入證書
- 打開“鑰匙串訪問”(Keychain Access),在應用程序 > 實用工具中找到。
- 選擇“系統”鑰匙串。
- 點擊“文件” > “導入項目”,選擇
myCA.pem。 - 導入后,右鍵點擊該證書,選擇“獲取信息”,將其設置為“始終信任”。
在 Linux 中導入證書
-
將
myCA.pem文件復制到系統的 CA 存儲目錄,通常在/usr/local/share/ca-certificates/。 -
使用以下命令更新 CA 庫:
sudo cp myCA.pem /usr/local/share/ca-certificates/myCA.crt sudo update-ca-certificates
在瀏覽器中導入證書
如果只希望在特定瀏覽器中使用信任證書,可以在瀏覽器設置中導入:
- Google Chrome / Firefox:
- 打開瀏覽器設置,找到“隱私與安全” > “證書”或“安全”。
- 選擇“管理證書” > “導入”。
- 選擇
myCA.pem,并將其添加到“受信任的根證書頒發機構”。
- 重啟瀏覽器以使更改生效。
3. 使用 CA 證書簽署服務器證書
CA 根證書導入成功后,我們可以使用該 CA 證書為需要的域名簽署服務器證書。簽署的服務器證書將自動受到信任。
生成服務器證書并使用 CA 簽署
-
生成服務器私鑰和證書請求 (CSR)
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048 openssl req -new -key server.key -out server.csr -
使用 CA 證書簽署服務器證書
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.crt -days 365 -sha256server.crt就是服務器證書,由自簽的 CA 證書簽發。
-
配置服務器:將
server.key和server.crt配置到你的 HTTPS 服務器(如 Nginx、Apache 或 Golang 的 TLS 服務器)上。
4. 驗證瀏覽器信任
此時,當瀏覽器訪問使用 server.crt 的服務器時,應看到 HTTPS 是綠色安全的,而不會再顯示“證書不受信任”的警告。
總結
- 生成一個自簽名的 CA 證書。
- 將 CA 證書導入系統或瀏覽器的信任證書庫。
- 使用 CA 證書簽署服務器證書。
- 配置 HTTPS 服務器并驗證瀏覽器信任。
通過以上步驟,你的瀏覽器將信任由這個 CA 證書簽發的所有服務器證書。