所有 SSL 文章 SSL 與憑證

什麼是 CSR(證書籤名請求)?

CSR(Certificate Signing Request,證書籤名請求)是你傳送給憑證授權機構(CA)以申請 SSL 證書的編碼資料塊。它包含你的公鑰和域名資訊。CA 使用它來建立你的證書。

CSR 內包含什麼

欄位示例必需?
Common Name (CN)example.com
公鑰你的 RSA 或 ECDSA 公鑰
金鑰演算法ECDSA P-256 或 RSA 2048
組織Your Company LLCDV 可選
國家USDV 可選
SANwww.example.comapi.example.com多域名時需要

對於 DV 證書(如 Let’s Encrypt),只有域名和公鑰重要。組織欄位會被忽略。

CSR 生成流程

  1. 生成金鑰對 —— 一個私鑰和一個公鑰
  2. 構建 CSR —— 將公鑰 + 域名資訊編碼為標準格式(PKCS#10)
  3. 簽名 CSR —— 用私鑰簽名(證明你持有匹配的私鑰)
  4. 傳送給 CA —— CA 驗證你的域名所有權,然後使用 CSR 建立你的證書

私鑰永遠不離開你的系統。CSR 只包含公鑰。

GetHTTPS 自動處理 CSR

使用傳統工具時,你需要手動用 OpenSSL 生成 CSR:

# The manual way (not needed with GetHTTPS)
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout privkey.pem -out csr.pem -nodes \
  -subj "/CN=example.com"

使用 GetHTTPS 時,你完全不需要接觸 CSR。工具會:

  1. 在瀏覽器中生成金鑰對(Web Crypto API)
  2. 從你輸入的域名自動構建 CSR
  3. 作為 ACME 流程的一部分傳送給 Let’s Encrypt
  4. 給你簽名後的證書供下載

CSR 是內部步驟——你只需輸入域名即可獲得證書。

手動生成 CSR(需要時)

如果你需要獨立的 CSR(用於商業 CA,或需要上傳 CSR 的平臺),方法如下:

ECDSA P-256(推薦)

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout privkey.pem -out csr.pem -nodes \
  -subj "/CN=example.com"

RSA 2048

openssl req -new -newkey rsa:2048 \
  -keyout privkey.pem -out csr.pem -nodes \
  -subj "/CN=example.com"

多域名(SAN)

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout privkey.pem -out csr.pem -nodes \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

驗證 CSR

openssl req -in csr.pem -noout -text

這會顯示嵌入 CSR 中的域名、金鑰演算法和金鑰大小。

CSR 在 ACME 協議中

ACME 協議(Let’s Encrypt 使用的)中,CSR 在完成步驟傳送——在域名驗證透過之後。CA 使用 CSR 中的公鑰構建你的證書。CSR 格式為 PKCS#10,在 ACME JSON 訊息中編碼為 base64url。

使用 GetHTTPS 時,整個過程在 JavaScript 中透過 Web Crypto API 和 pkijs 庫完成。你永遠看不到原始 CSR 位元組。

常見問題

我需要保留 CSR 檔案嗎?

不需要。CSR 僅在證書請求期間使用。CA 簽發證書後,CSR 就沒有用處了。保留你的私鑰證書——CSR 可以丟棄。

續簽時能複用 CSR 嗎?

技術上可以,但最好每次續簽都生成新的金鑰對和 CSR。這遵循金鑰輪換原則,限制了金鑰洩露時的暴露。

CSR 和證書有什麼區別?

CSR 是請求——它包含你的公鑰並請求 CA 簽名。證書是結果——它是 CA 簽名的宣告,表明你的公鑰屬於你的域名。CSR 是輸入;證書是輸出。

能為萬用字元域名生成 CSR 嗎?

可以。使用 *.example.com 作為 Common Name:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout privkey.pem -out csr.pem -nodes \
  -subj "/CN=*.example.com"

使用 GetHTTPS 時不需要手動生成 CSR——輸入 *.example.com 作為域名,GetHTTPS 自動處理 CSR。

CSR 中的”金鑰用途”是什麼意思?

金鑰用途擴充套件指定證書可以用於什麼——TLS 證書通常是”數字簽名”和”金鑰加密”。GetHTTPS 和大多數 ACME 用戶端預設正確設定這些。只有當你為有特定要求的商業 CA 手動生成 CSR 時才需要關心金鑰用途。

相關文章

SSL 與憑證 2026-05-07
ECC 與 RSA 證書:該如何選擇?
對比 ECC(ECDSA P-256)和 RSA(2048/4096 位)證書。ECC 金鑰更小、更快。瞭解為什麼 GetHTTPS 預設使用 ECC,以及何時 RSA 仍有意義。
快速開始 2026-05-08
如何獲取免費 SSL 證書(分步指南)
5 分鐘從 Let's Encrypt 獲取免費 SSL 證書 — 無需安裝軟體、無需註冊賬號。涵蓋 4 種方法、兩種驗證方式、6 個平臺的安裝教程和故障排除。
SSL 與憑證 2026-05-07
SSL/TLS 如何工作:TLS 握手詳解
TLS 握手的視覺化解析——瀏覽器和伺服器如何在毫秒內建立加密連線。涵蓋 TLS 1.2、TLS 1.3、會話恢復和前向保密。
在瀏覽器中取得免費 SSL 憑證
無需安裝,無需帳號。私鑰始終留在你的裝置上。
取得憑證