本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在加密和公開金鑰基礎設施 (PKI) 中,數位簽章是用來確認資料已由可信任的實體傳送。此簽章也代表傳輸中的資料未經過篡改。簽章是一種由寄件者的私有金鑰產生的加密雜湊。接收者可以使用寄件者的公有金鑰解密雜湊簽章,以驗證資料完整性。因此,應該由寄件者負責維護數位憑證。數位憑證代表寄件者的私有金鑰擁有權,並可將解密所需的公有金鑰提供給接收者。只要私有金鑰由寄件者擁有,就可以信任簽章。 AWS CloudHSM 提供安全的 FIPS 140-2 第 3 級驗證硬體,讓您使用獨佔的單一租用戶存取來保護這些金鑰。
許多組織使用 Microsoft SignTool,這是一種命令列工具,可簽署、驗證檔案,並加入時間戳記,以簡化程式碼簽署程序。您可以使用 AWS CloudHSM 安全地存放金鑰對,直到 SignTool 需要它們為止,因此建立易於自動化的工作流程來簽署資料。
下列主題提供如何使用 SignTool 的概觀 AWS CloudHSM。
步驟 1:設定先決條件
若要搭配 Microsoft SignTool 使用 AWS CloudHSM,您需要下列項目:
-
執行 Windows 作業系統的 Amazon EC2 用戶端執行個體。
-
憑證授權單位 (CA);不論是自己維護,或由第三方供應商建立。
-
與 EC2 執行個體位於相同虛擬公有雲端 (VPC) 中的作用中 AWS CloudHSM 叢集。叢集必須至少包含一個 HSM。
-
加密使用者 (CU),以擁有和管理 AWS CloudHSM 叢集中的金鑰。
-
未簽署的檔案或可執行檔。
-
Microsoft Windows 軟體開發套件 (SDK)。
設定 AWS CloudHSM 搭配 Windows SignTool 使用 的先決條件
-
請依照本指南中入門一節的說明,來啟動 Windows EC2 執行個體與 AWS CloudHSM 叢集。
-
如果您想要託管自己的 Windows Server CA,請遵循將 Windows Server 設定為憑證授權單位 AWS CloudHSM中的步驟 1 和 2。否則,請繼續使用您公開信任的第三方 CA。
-
在您的 Windows EC2 執行個體上,下載並安裝下列其中一個版本的 Microsoft Windows 軟體開發套件:
SignTool
可執行檔是 Windows SDK Signing Tools for Desktop Apps 安裝功能的一部分。如果您不需要其他功能,可以省略其安裝。預設安裝位置為:C:\Program Files (x86)\Windows Kits\
<SDK version>
\bin\<version number>
\<CPU architecture>
\signtool.exe
您現在可以使用 Microsoft Windows SDK、 AWS CloudHSM 叢集和 CA 來建立簽署憑證。
步驟 2:建立簽署憑證
現在您已將 Windows SDK 下載到您的 EC2 執行個體上,即可使用它來產生憑證簽署請求 (CSR)。CSR 是未簽署的憑證,最終會傳遞到您的 CA 以進行簽署。在這個範例中,我們使用 Windows SDK 隨附的 certreq
可執行檔,來產生 CSR。
使用 certreq
可執行檔來產生 CSR
-
如果您尚未連線至 Windows EC2 執行個體,請先進行連線。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的連線至您的執行個體。
-
建立名為
request.inf
的檔案,其中包含以下各行。將Subject
資訊取代為您組織的相關資訊。如需每個參數的說明,請參閱 Microsoft 文件。 [Version] Signature= $Windows NT$ [NewRequest] Subject = "C=
<Country>
,CN=<www.website.com>
,O=<Organization>
,OU=<Organizational-Unit>
,L=<City>
,S=<State>
" RequestType=PKCS10 HashAlgorithm = SHA256 KeyAlgorithm = RSA KeyLength = 2048 ProviderName = "Cavium Key Storage Provider" KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE" MachineKeySet = True Exportable = False -
執行
certreq.exe
。在此範例中,我們將 CSR 儲存為request.csr
。certreq.exe -new request.inf request.csr
在內部,會在您的 AWS CloudHSM 叢集上產生新的金鑰對,而該對的私有金鑰會用來建立 CSR。
-
將 CSR 提交給您的 CA。如果您使用的是 Windows Server CA,請依照下列步驟進行:
-
輸入下列命令以開啟 CA 工具:
certsrv.msc
-
在新的視窗中,以滑鼠右鍵按一下 CA 伺服器的名稱。選擇 All Tasks (所有任務),然後選擇 Submit new request (提交新請求)。
-
導覽至
request.csr
的位置,然後選擇 Open (開啟)。 -
展開伺服器 CA 功能表,導覽至待處理的請求資料夾。用滑鼠右鍵按一下您剛建立的請求,並在 All Tasks (所有任務) 下方選擇 Issue (發行)。
-
現在,導覽至 Issued Certificates (發行的憑證) 資料夾 (位於 Pending Requests (待處理的請求) 資料夾上方)。
-
選擇 Open (開啟) 以檢視憑證,然後選擇 Details (詳細資訊) 標籤。
-
選擇 Copy to File (複製到檔案) 來啟動 [憑證匯出精靈]。將 DER 編碼的 X.509 檔案以
signedCertificate.cer
名稱儲存到安全的位置。 -
結束 CA 工具,並使用下列命令,將憑證檔案移至 Windows 的個人憑證存放區中。其他應用程式即可使用此憑證。
certreq.exe -accept signedCertificate.cer
-
您現在可以使用匯入的憑證來簽署檔案。
步驟 3:簽署檔案
您現在可以開始使用 SignTool 和匯入的憑證,來簽署您的範例檔案。若要執行此作業,您需要知道憑證的 SHA-1 雜湊或「指紋」。指紋是用來確保 SignTool 只使用經過 AWS CloudHSM驗證的憑證。在這個範例中,我們使用 PowerShell 取得憑證的雜湊。您也可以使用 CA 的 GUI 或 Windows 軟體開發套件的 certutil
可執行檔。
取得憑證的指紋,並使用它來簽署檔案
-
以管理員身分開啟 PowerShell,並執行下列命令:
Get-ChildItem -path cert:\LocalMachine\My
複製傳回的
Thumbprint
。 -
導覽至 PowerShell 中包含
SignTool.exe
的目錄。預設位置為C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
。 -
最後,執行以下命令簽署您的檔案。如果命令成功,PowerShell 會傳回成功訊息。
signtool.exe sign /v /fd sha256 /sha1
<thumbprint>
/sm C:\Users\Administrator\Desktop\<test>
.ps1 -
(選用) 若要驗證檔案上的簽章,請使用下列命令:
signtool.exe verify /v /pa C:\Users\Administrator\Desktop\
<test>
.ps1