用 OpenSSL 自簽 SSL 憑證:IT Admin 必學嘅 5 分鐘教學
作為一個 IT Admin,成日都會遇到一個情況:內部測試環境、開發伺服器、或者內聯網嘅管理介面,需要行 HTTPS,但係又唔想花錢買正式憑證。呢個時候,自簽 SSL 憑證(Self-Signed SSL Certificate)就係最簡單快捷嘅解決方案。
今日小T 就同大家由零開始,一步一步用 OpenSSL 整一張自簽憑證,順便講埋點樣避免踩坑。
點解要自簽憑證?
自簽憑證同正式憑證最大嘅分別,就係冇經 CA(Certificate Authority)簽發。正式憑證(例如 Let’s Encrypt、DigiCert)有 CA 幫你擔保身份,瀏覽器會自動信任;自簽憑證就係你自己幫自己簽名,加密功能同正式憑證一樣,但係瀏覽器會出「不安全」警告。
常見用途包括:
– 內網管理介面(NAS、Router、Switch、防火牆 Web UI)
– 開發 / 測試環境
– 內部 API 服務之間嘅 TLS 加密
– 學習 TLS / HTTPS 原理
記住:正式對外服務千祈唔好用自簽憑證,因為用户會見到紅色警告,仲可能俾中間人攻擊(MITM)利用。
Step 1:檢查 OpenSSL 有冇裝好
首先確認你部機有 OpenSSL:
openssl version
正常會見到類似輸出:
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
如果冇,喺 macOS 可以用 Homebrew 裝,Ubuntu/Debian 就:
sudo apt update && sudo apt install -y openssl
Step 2:生成私鑰(Private Key)
自簽憑證第一步,係生成一條 RSA 私鑰。我哋用 2048 位元(夠安全,效能又好):
openssl genrsa -out server.key 2048
如果你想更安全,可以用 4096 位元,但係握手會慢少少:
openssl genrsa -out server.key 4096
私鑰係成張憑證嘅核心,千祈唔好外洩。可以順手設返個嚴格權限:
chmod 600 server.key
Step 3:生成 CSR(憑證簽署請求)
下一步係生成 CSR。呢度會問你一堆身份資料:
openssl req -new -key server.key -out server.csr
佢會逐項問你:
– Country Name (2 letter code):例如 `HK`
– State or Province Name:例如 `Hong Kong`
– Locality Name:例如 `Kowloon`
– Organization Name:公司名,例如 `Molious Cyber World`
– Organizational Unit Name:部門,例如 `IT`
– Common Name:呢個最緊要,填你個 server 嘅域名或 IP,例如 `nas.internal.local` 或 `192.168.1.100`
– Email Address:留空都得
⚠️ Common Name 填錯係最常見嘅坑。如果你張憑證係俾 `192.168.1.100` 用,Common Name 就要填 `192.168.1.100`,否則瀏覽器會話你「憑證與主機名稱不符」。
Step 4:簽發自簽憑證
有咗 CSR 同私鑰,就可以自簽。`-days 3650` 代表有效期 10 年:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
咁就搞掂!你會得到兩個檔案:
– `server.key` — 私鑰(要保密)
– `server.crt` — 憑證(可以公開)
Step 5:用 SAN 支援多個域名 / IP(進階)
現代瀏覽器(尤其 Chrome)已經唔再理 Common Name,改為要求 SAN(Subject Alternative Name)。如果你張憑證要同時覆蓋域名同 IP,就要用 SAN。
先整個設定檔 `san.cnf`:
cat > san.cnf <<EOF
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
CN = nas.internal.local
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = nas.internal.local
DNS.2 = files.internal.local
IP.1 = 192.168.1.100
EOF
然後用呢個設定重新生成:
openssl req -new -key server.key -out server.csr -config san.cnf
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt -extensions v3_req -extfile san.cnf
咁樣一張憑證就可以同時俾多個域名同 IP 用。
常見踩坑位
1. 憑證名同主機名不符 — 最常見,記得用 SAN。
2. 私鑰權限太鬆 — 記得 `chmod 600`。
3. 有效期太短 — 測試環境建議直接 `-days 3650`,唔使成日續期。
4. 瀏覽器紅色警告 — 呢個係正常嘅,自簽憑證冇 CA 背書,手動「信任」就可以繼續用。
總結
🔗 參考資料:NVD NIST 漏洞資料庫
自簽憑證係 IT Admin 嘅基本功夫,幾分鐘就搞掂,幫你慳返唔少買憑證嘅錢。記住大原則:內部用自簽、對外用正式憑證。下次要整內部測試環境,就可以即刻用返呢套流程。
#技術分享 #SSL #server #IT教學




