Select another language to continue browsing and purchasing services in English.

知識庫

如何在沒有 IIS 管理員的情況下在基於 Windows 的伺服器上產生 CSR 程式碼

如果我們需要為除 IIS 之外的服務安裝 SSL 證書,而 Windows 伺服器上沒有安裝 IIS 管理員,那麼在這種情況下可以如何生成 CSR 代碼呢?

幸運的是,還有幾種替代方法可用。儘管這些替代方法不會提供向導式的用戶友好界面,並且需要對系統管理工具有一定的熟悉度,但它們仍然非常有效,以實現我們的目標——生成一個 CSR 代碼,我們可以在證書啟用過程中提交給證書授權機構。

所以讓我們更詳細地看看每種方法。

在 MMC(Microsoft 管理控制台)中生成 CSR

通過以下步驟打開 MMC 中的“證書”外掛: Win+R > mmc.exe > 確定 > 文件 > 添加/刪除外掛 > 證書 > 添加 > 計算機帳戶 > 下一步 > 本地計算機 > 完成 > 確定

在“個人 > 證書”面板中,右鍵單擊空白處,然後選擇所有任務 > 高級操作 > 創建自定義請求,以打開“證書註冊”嚮導:

csrmmc1

確保選中默認的“在不使用註冊策略的情況下進行”選項,然後單擊“下一步”:

csrmmc2

在下一個屏幕上,保留預選的選項“(無模板)CNG 金鑰”和“PKCS#10”,然後單擊“下一步”:

csrmmc3

現在我們需要打開一個窗口,在其中我們會調整證書請求,使我們能夠獲取具有正確信息和所需金鑰類型的證書。單擊右側的下拉箭頭,然後單擊“屬性”按鈕。

csrmmc4

在適當的字段中添加友好的名稱值,以便您將來可以識別此請求條目。此字段用於給證書命名,可以是將為其簽發證書的域名或幾乎任何其他名稱:

csrmmc5

在名為“主體”的下一個選項卡中,我們需要向請求中添加幾個字段並指定其值。請求中必須存在的最基本字段類型包括:

  • 公用名稱:為要簽發證書的完全合格域名
  • 國家:符合 ISO 3166 的 2 字母國家代碼。可以在這裡檢查正確代碼。
  • 州:州或地區名稱;可以與城市名稱相同
  • 地方:城市名稱
  • 組織:這裡應指定公司名稱

注意:如果您需要在請求中添加主體替代名稱,可以在“替代名稱”部分進行選擇。選擇“DNS”字段類型,並逐一添加域名:

csrmmc6

結果應類似於這樣:

csrmmc7

我們應該打開並查看的此窗口的最後一個選項卡是“私鑰”。展開“加密服務提供者”部分進行查看。這裡的默認選項是“RSA”算法,這是當今行業標準,儘管您可以選擇“ECDSA”(如果需要發出 ECC 證書),通過選擇下圖中的一個條目來完成:

csrmmc8

在“金鑰選項”部分,如果使用 RSA 算法,確保“金鑰大小”設置為至少 2048 位。

注意:基於大小低於 2048 位的金鑰的證書被認為不安全,受信任的證書授權機構不再簽發它們。

如果您計劃導出證書,例如,在另一個實例上安裝,則需要檢查“使私鑰可導出”選項:

csrmmc9

現在我們可以單擊“確定”並繼續。

“證書註冊”嚮導的最後一個屏幕要求我們指定 CSR 代碼要保存的文件名及其在文件系統中的位置。同時,確保“文件格式”設置為“Base64”。然後單擊“完成”按鈕以啟動我們剛才設置的屬性的私鑰和 CSR 生成:

csrmmc10

使用 Certreq 實用程序生成 CSR

'Certreq' 是一個基於命令行的實用程序,主要用於創建和提交證書請求,並從證書授權機構檢索、接受和安裝響應。

在開始使用 'certreq' 之前,我們需要從中提取 CSR 所需信息的策略文件。創建一個新的普通文本文件並打開它。然後將以下文本複製並粘貼到文件中(選擇 RSA 或 ECDSA 的代碼片段):

RSA

;----------------- request.inf -----------------

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "C=HK, O=ZTABOX, CN=zbtest.tube, L=Hong Kong, S=Hong Kong"

KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
;-----------------------------------------------


ECDSA

;----------------- request.inf -----------------

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "C=HK, O=ZTABOX, CN=zbtest.tube, L=Hong Kong, S=Hong Kong"
KeyAlgorithm = ECDSA_P384 ; 可以改為 256 或 521
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft Software Key Storage Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
;-----------------------------------------------

注意:您可以通過在 'Subject' 指令中指定 'Street' 變數來向 CSR 代碼添加街道地址值,如下所示:

Subject = "CN=zbtest.tube, C=HK, O=ZTABOX, L=Hong Kong, S=Hong Kong, Street= Test Avenue 1"

請確保將黑色部分的值更改為對您的請求有效的值。然後將文件保存為 .inf 類型(例如 request.inf):

csrmmc11

現在我們可以打開命令行提示符: Win+R > cmd > Enter

使用 'cd' 命令導航到保存策略文件的文件夾: cd C:

運行以下命令以啟動 CSR 生成: certreq.exe -new request.inf zbtest.csr

csrmmc12

如果命令出現“請求創建”訊息,則 CSR 代碼已生成並保存在 .csr 文件中(上述示例中的 zbtest_ecdsa.csr)。

通過 Powershell 生成 CSR

如果您喜歡腳本並習慣在 Powershell 中執行某些例行任務,您一定會喜歡這個腳本,它設計用於生成 2048 位 RSA 密鑰的 CSR。

將腳本文件下載到您的伺服器實例後,通過運行下列方式打開 Powershell 控制台: Win+R > powershell > Enter

導航到包含下載的腳本文件的文件夾: cd C:

運行下載的腳本: .'Generate Certificate Signing Request SHA256 2048bit'.ps1

提示類似於 OpenSSL 的窗口將要求您輸入公用名稱、組織、組織單位、城市、州和國家值。

注意:當被要求提供主體替代名稱時,您可以根據需要指定它們,或者通過按 Enter 簡單地忽略此步驟。

最後,Powershell 窗口將生成提供信息的摘要,哈希和密鑰算法詳細信息以及 CSR 代碼,並提供立即復製 CSR 到剪貼板的選項:

csrmmc13

當使用上述任何方法生成 CSR 代碼後,您可以繼續進行 SSL 證書的啟用。