

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 使用 Microsoft 資訊清單產生和編輯工具 (Mage.exe) AWS CloudHSM 來簽署檔案
<a name="third-magetool"></a>

**注意**  
AWS CloudHSM 僅支援 Windows SDK for .NET Framework 4.8.1 和更新版本中包含的 64 位元 Mage 工具。

下列主題提供如何搭配 使用 [ Mage.exe ](https://learn.microsoft.com/en-us/dotnet/framework/tools/mage-exe-manifest-generation-and-editing-tool) 的概觀。 AWS CloudHSM

**Topics**
+ [步驟 1：設定先決條件](#magetool-prereqs)
+ [步驟 2：建立簽署憑證](#magetool-csr)
+ [步驟 3：簽署檔案](#magetool-sign)

## 步驟 1：設定先決條件
<a name="magetool-prereqs"></a>

若要搭配 使用 Microsoft Mage.exe AWS CloudHSM，您需要下列項目：
+ 執行 Windows 作業系統的 Amazon EC2 執行個體
+ 憑證授權機構 (CA)，可自我維護或來自第三方供應商
+ 與 EC2 執行個體位於相同虛擬私有雲端 (VPC) 中的作用中 AWS CloudHSM 叢集，至少有一個 HSM
+ 在 AWS CloudHSM 叢集中擁有和管理金鑰的加密使用者 (CU)
+ 未簽署的檔案或可執行檔
+ Microsoft Windows 軟體開發套件 (SDK)

**設定搭配使用 AWS CloudHSM 與 Mage.exe 的先決條件**

1. 按照本指南[入門](getting-started.md)一節中的指示啟動 Windows EC2 執行個體和 AWS CloudHSM 叢集。

1. 如果您想要託管自己的 Windows Server CA，請完成將 [Windows Server 設定為憑證授權單位 AWS CloudHSM](win-ca-overview-sdk5.md)中的步驟 1 和 2。否則，請使用您公開信任的第三方 CA。

1. 在 Windows EC2 執行個體上下載並安裝適用於 .NET Framework 4.8.1 或更新版本的 Microsoft Windows 開發套件：
   + [Microsoft Windows SDK 10](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)

   可執行檔是 Windows SDK `mage.exe` 工具的一部分。預設安裝位置為：

   ```
   C:\Program Files (x86)\Windows Kits\{{<SDK version>}}\bin\{{<version number>}}\x64\Mage.exe
   ```

完成這些步驟後，您可以使用 Microsoft Windows SDK、 AWS CloudHSM 叢集和 CA [來建立簽署憑證](#magetool-csr)。

## 步驟 2：建立簽署憑證
<a name="magetool-csr"></a>

現在您已在 EC2 執行個體上安裝 Windows 開發套件，您可以使用它來產生憑證簽署請求 (CSR)。CSR 是您提交給 CA 簽署的未簽署憑證。在此範例中，我們使用 Windows `certreq` 開發套件隨附的可執行檔來產生 CSR。

**使用 certreq 可執行檔產生 CSR**

1. 連線至您的 Windows EC2 執行個體。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[連線至您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)。

1. 建立名為 `request.inf` 且具有下列內容的檔案。將`Subject`資訊取代為您組織的詳細資訊：

   ```
   [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 = "CloudHSM Key Storage Provider"
   KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE"
   MachineKeySet = True
   Exportable = False
   ```

   如需每個參數的說明，請參閱 [Microsoft 文件](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New)。

1. 執行 `certreq.exe` 以產生 CSR：

   ```
   certreq.exe -new request.inf request.csr
   ```

   此命令會在您的 AWS CloudHSM 叢集上產生新的金鑰對，並使用私有金鑰來建立 CSR。

1. 將 CSR 提交給您的 CA。如果您使用的是 Windows Server CA，請遵循下列步驟：

   1. 開啟 CA 工具：

      ```
      certsrv.msc
      ```

   1. 在新的視窗中，以滑鼠右鍵按一下 CA 伺服器的名稱。選擇 **All Tasks (所有任務)**，然後選擇 **Submit new request (提交新請求)**。

   1. 導覽至 的位置`request.csr`，然後選擇**開啟**。

   1. 展開**伺服器 CA** 選單，並導覽至**待定請求**資料夾。在剛建立的請求上按一下滑鼠右鍵，選擇**所有任務**，然後選擇**問題**。

   1. 導覽至**已發行憑證**資料夾。

   1. 選擇 **Open (開啟)** 以檢視憑證，然後選擇 **Details (詳細資訊)** 標籤。

   1. 選擇 **Copy to File (複製到檔案)** 來啟動 [憑證匯出精靈]。將 DER 編碼的 X.509 檔案以 `signedCertificate.cer` 名稱儲存到安全的位置。

   1. 退出 CA 工具並執行下列命令，將憑證檔案移至 Windows 中的個人憑證存放區：

      ```
      certreq.exe -accept signedCertificate.cer
      ```

您現在可以使用匯入的憑證來[簽署檔案](#magetool-sign)。

## 步驟 3：簽署檔案
<a name="magetool-sign"></a>

現在您已擁有 Mage.exe 和匯入的憑證，您可以簽署 檔案。您需要知道憑證的 SHA-1 雜湊或*指紋*。指紋可確保 Mage.exe 僅使用由 驗證的憑證。 AWS CloudHSM在這個範例中，我們使用 PowerShell 取得憑證的雜湊。

**取得憑證的指紋，並使用它來簽署檔案**

1. 導覽至包含 的目錄`mage.exe`。預設位置為：

   ```
   C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64
   ```

1. 若要使用 Mage.exe 建立範例應用程式檔案，請執行下列命令：

   ```
   mage.exe -New Application -ToFile C:\Users\Administrator\Desktop\sample.application
   ```

1. 以管理員身分開啟 PowerShell，並執行下列命令：

   ```
   Get-ChildItem -path cert:\LocalMachine\My
   ```

   從輸出複製 `Key Container`、 `Thumbprint`和 `Provider`值。  
![憑證的雜湊會在輸出中顯示為指紋、金鑰容器和提供者](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/certstore-my-certificate.png)

1. 執行下列命令來簽署您的 檔案：

   ```
   mage.exe -Sign -CertHash {{<thumbprint>}} -KeyContainer {{<keycontainer>}} -CryptoProvider {{<CloudHSM Key Storage Provider/Cavium Key Storage Provider>}} C:\Users\Administrator\Desktop\{{<sample.application>}}
   ```

   如果命令成功，PowerShell 會傳回成功訊息。

1. 若要驗證 檔案上的簽章，請使用下列命令：

   ```
   mage.exe -Verify -CryptoProvider {{<CloudHSM Key Storage Provider/Cavium Key Storage Provider>}} C:\Users\Administrator\Desktop\{{<sample.application>}}
   ```