本文可協助您針對使用 Azure 雲端 HSM 服務時可能會遇到的常見問題和錯誤進行疑難解答。
常見的錯誤訊息
下列各節回答有關常見錯誤的問題,包括與虛擬機 (VM) 和硬體安全性模組 (HSM) 相關的錯誤。
為什麼在執行azcloudhsm_mgmt_util時收到錯誤訊息「憑證錯誤:[憑證簽章失敗]」?
當您採取下列步驟時,可能會發生此錯誤:
- 從另一個 VM 建立和初始化您的 Azure 雲端 HSM 部署。
- 嘗試安裝 Cloud HSM 用戶端 SDK,然後從另一個虛擬機器運行,這台虛擬機器缺少您初始化的系統管理 VM 中的正確
PO.crt檔案。
如果您將檔案從管理員 VM 複製到新的 VM 並重新執行 azcloudhsm_mgmt_util,您應該會看到成功連接到 HSM。
為什麼在執行 azcloudhsm_client 時,會收到錯誤訊息「INF: shutdown_ssl_socket: SSL_shutdown 傳送 close_notify 警示」?
當您採取下列步驟時,可能會發生此錯誤:
- 從另一個 VM 建立和初始化您的 Azure 雲端 HSM 部署。
- 嘗試安裝 Cloud HSM 客戶端 SDK,並從另一個沒有或缺少正確
PO.crt檔案的 VM 執行,此檔案應該來自您初始化過的系統管理 VM。
如果您從 PO.crt 管理 VM 將檔案複製到新的 VM 並重新執行 azcloudhsm_client,您應該會看到成功建立與 HSM 的連線。
為什麼我收到錯誤訊息「azcloudhsm_application.cfg 不存在」?
若要確保應用程式成功執行,您必須符合下列兩個條件:
檔案
azcloudhsm_application.cfg存在於與應用程式相同的目錄中。此工具
azcloudhsm_client正在執行。 如果azcloudhsm_client未啟動,您會遇到套接字連線失敗。同樣地,缺少
azcloudhsm_application.cfg檔案會導致錯誤訊息。 視應用程式執行位置而定,您可能需要將檔案從 Azure Cloud HSM SDK 目錄複製到azcloudhsm_application.cfg您執行應用程式的目錄。
適用於 Azure Cloud HSM 的 OpenSSL 引擎
適用於 Azure 雲端 HSM 的 OpenSSL 引擎是否支援 Windows?
否。 適用於 Azure Cloud HSM 的 OpenSSL 引擎僅支援 Linux(Ubuntu 20.04、Ubuntu 22.04、RHEL 7、RHEL 8 和 CBL Mariner 2)。
為什麼我收到錯誤訊息「無效的引擎 」azcloudhsm_openssl『 無法載入共用連結庫」?
錯誤訊息指出未設定必要條件環境變數 LD_LIBRARY_PATH 。 此設定是必要的。 將 LD_LIBRARY_PATH 環境變數設定為 Azure Cloud HSM SDK 所在的目錄。
您必須更新環境變數,以執行下列命令來反映正確的 SDK 版本:
export LD_LIBRARY_PATH=/opt/azurecloudhsm/lib64/:$LD_LIBRARY_PATH
為什麼我收到錯誤訊息「未設定環境變數azcloudhsm_openssl_conf」?
錯誤訊息表示未設定必要條件環境變數 azcloudhsm_openssl_conf 。 將 azcloudhsm_openssl_conf 環境變數設定為 Azure Cloud HSM SDK 目錄中檔案 azcloudhsm_openssl_dynamic.conf 的檔案路徑位置。
您必須更新環境變數,以執行下列命令來反映正確的 SDK 版本:
export azcloudhsm_openssl_conf=/opt/azurecloudhsm/bin/azcloudhsm_openssl_dynamic.conf
為什麼我收到「未設定環境變數azcloudhsm_password」錯誤訊息?
錯誤訊息指出未設定必要條件環境變數 azcloudhsm_password 。 將 azcloudhsm_password 環境變數設定為的值 cryptouser:password。
您必須更新環境變數,以反映正確的密碼編譯使用者和密碼:
export azcloudhsm_password="cu1:user1234"
適用於 Azure 雲端 HSM 的 JCE 提供者
下列各節回答與 Java 密碼編譯延伸模組 (JCE) 相關的問題。
JCE 與 Azure Cloud HSM 整合是否支援 Windows?
否。 JCE 與 Azure Cloud HSM 整合僅支援 Linux(Ubuntu 20.04、Ubuntu 22.04、RHEL 7、RHEL 8、CBL Mariner 2)。
為什麼我收到錯誤訊息「找不到登入 HSM 的認證」?
此錯誤指出尋找或驗證登入 Cloud HSM 所需的認證時的挑戰。 當您使用本文件中的範例,或將 Azure Cloud HSM 的 JCE 提供者整合到您的應用程式時,請務必使用相應的認證明確登入:
// Explicit Login with Credentials
LoginManager lm=LoginManager.getInstance();
lm.login("PARTITION_1","cu1","user1234");
// Logout of the HSM
lm.logout();
為什麼我收到錯誤訊息「此操作的屬性值為 0」? 應該為 User KEK 設定屬性嗎?
錯誤表示用戶產生的金鑰加密金鑰 (KEK) 未建立並指定為可擷取,且 wrap_with_trusted 設定為 1。 如需執行金鑰匯入、金鑰包裝和金鑰解除包裝作業時要使用的適當設定,請參閱 JCE 整合指南中建立使用者產生的 KEK 一節。
為什麼我收到錯誤訊息「精靈套接字連線錯誤,API 登入失敗」?
此錯誤指出尋找或驗證登入 Cloud HSM 所需的認證時的挑戰。 當您使用 JCE 整合指南 中的範例或將 Azure Cloud HSM JCE 提供者併入您的應用程式時,請務必使用認證明確登入以確保連線。
適用於 Azure Cloud HSM 的 PKCS#11 程式庫
為什麼收到錯誤訊息「C_Login失敗,並出現錯誤碼:0xa3」?
錯誤 0xa3 表示登入失敗。 失敗可能與您傳遞的 PIN 參數格式相關,或 PIN(密碼)可能不正確。
PIN 應以下列格式提供: char pPin[256] = "crypto_user:user123";。
pPin 值應該遵循 <username>:<password> 的結構。 確認您提供 pPin 這個格式的值,因為任何偏差都可能導致登入失敗。
為什麼我會收到錯誤訊息「C_Initialize() 因 00000005 失敗(無法連接 socket)」?
在 C_Initialize 期間,失敗的套接字連線可能與系統上未執行 azcloudhsm_client 工具有關。 若要讓 PKCS#11 應用程式順利執行, azcloudhsm_client 則必須執行。 您可以從在個別終端機中執行下列其中一個命令開始 azcloudhsm_client 。
Linux (建議)
如果您使用 DEB 或 RPM 安裝 Azure Cloud HSM SDK,則用戶端不會自動設定為以服務身分執行。 在安裝期間,SDK 會包括位於 /etc/systemd/system/azure-cloud-hsm.service 下的服務單元檔案。 若要啟用 azcloudhsm_client 以服務身分執行,請使用預先定義的 azure-cloud-hsm.service 檔案。
重新載入 systemd 配置並啟用服務,以確保它持續執行。 執行下列步驟:
開啟終端機視窗,並將目錄變更為
/etc/systemd/system,其中 Cloud HSM 服務單位檔案所在的位置:cd /etc/systemd/system啟動並啟用雲端 HSM 用戶端服務:
sudo systemctl start azure-cloud-hsm.service sudo systemctl enable azure-cloud-hsm.service檢查雲端 HSM 用戶端服務的狀態:
sudo systemctl status azure-cloud-hsm.service重載設定
systemd:sudo systemctl daemon-reload sudo systemctl list-units --type=service --state=running
Linux (手動)
如果客戶端精靈未執行,請啟動它:
sudo ./azcloudhsm_client azcloudhsm_client.cfg
您也可以使用下列命令,選擇在背景中執行用戶端精靈。 或者,您可以以服務的形式執行用戶端精靈,以確保它一律執行。
sudo ./azcloudhsm_client azcloudhsm_client.cfg > /dev/null 2>&1 &
Windows (建議)
如果您使用 MSI 套件安裝 Azure Cloud HSM SDK,則用戶端已設定為以服務身分執行。 如果客戶端未執行,您可以開啟 Services.msc,以滑鼠右鍵按兩下 [Microsoft Azure Cloud HSM 用戶端服務],然後選取 [ 啟動]。
Windows (手動)
如果客戶端精靈未執行,請啟動它:
cd C:\Program Files\Microsoft Azure Cloud HSM Client SDK
.\azcloudhsm_client.exe .\azcloudhsm_resource.cfg
適用於 Linux 的 PKCS#11 函式庫如何知道該如何尋找客戶端設定?
PKCS#11 連結庫知道如何尋找用戶端組態,因為您必須在執行應用程式的應用程式伺服器上擁有執行應用程式並使用 PKCS#11 連結庫的分割區擁有者憑證複本 (PO.crt)。 除了分割區所有者憑證:
- 您必須在安裝了 SDK 的應用程式伺服器上更新
/azcloudhsm_client/azcloudhsm_client.cfg,使其指向您的 Azure Cloud HSM 部署(也就是hsm1.chsm-<resourcename>-<uniquestring>.privatelink.cloudhsm.azure.net)。 - 此工具
azcloudhsm_client必須在連線到 Azure Cloud HSM 部署的應用程式伺服器上執行。 - 您必須使用語法
<username>:<password>在 PKCS#11 應用程式中指定 PIN。 您可以使用此 PIN 來呼叫C_Login到您的 Azure 雲端 HSM 部署中。 - 您必須在 PKCS#11 應用程式中包含
pkcs11_headers/include/cryptoki.h和pkcs11_headers/include/pkcs11t.h,才能使用適用於 Azure Cloud HSM 的 PKCS#11 連結庫。
Windows 的 PKCS#11 連結庫 (azcloudhsm_pkcs11.dll) 如何瞭解如何尋找客戶端設定?
Azure Cloud HSM Windows SDK 中的 azcloudhsm_pkcs11.dll 檔案知道如何找到用戶端組態,因為您必須在執行應用程式及使用 PKCS#11 函式庫的伺服器上,放置一份分割區擁有者憑證的複本(PO.crt)。 除了分割區擁有者憑證:
- 您必須在已安裝 SDK 的應用程式伺服器上更新
/azcloudhsm_client/azcloudhsm_client.cfg,使其指向您的 Azure Cloud HSM 部署(即hsm1.chsm-<resourcename>-<uniquestring>.privatelink.cloudhsm.azure.net)。 - 此工具
azcloudhsm_client必須在連線到 Azure Cloud HSM 部署的應用程式伺服器上執行。 - 您必須使用語法
<username>:<password>在 PKCS#11 應用程式中指定 PIN。 此 PIN 可用來呼叫C_Login您的 Azure 雲端 HSM 部署。 - 您必須在 PKCS#11 應用程式中包含
pkcs11_headers\include\cryptoki.h和pkcs11_headers\include\pkcs11t.h,才能使用適用於 Azure Cloud HSM 的 PKCS#11 連結庫。
當我嘗試設定金鑰或金鑰存放區時,為什麼會收到 PKCS#11 錯誤?
請確定您有 Azure 雲端 HSM 用戶端正在執行 (sudo ./azcloudhsm_client azcloudhsm_client.cfg)。 不正確的使用者、不正確的密碼、未執行的液體安全性用戶端,或客戶端無法連線可能會導致下列錯誤:
Error Message:ERROR at line 1:
ORA-28407: Hardware Security Module failed with PKCS#11 error
CKR_GENERAL_ERROR(5)
PKCS#11 連結庫 (azcloudhsm_pkcs11.dll) 如何與OpenSC整合?
當您使用開放原始碼智慧卡(OpenSC)工具時,必須使用--sensitive 和--private 自變數,因為敏感和私人屬性無法被0。 如果沒有這些自變數,OpenSC 工具會將敏感性和私用屬性設定為 0。 這些屬性會產生例外狀況,因為 Azure Cloud HSM 一律會強加敏感性和私用行為。
以下是進階加密標準 (AES) 包裝範例:
pkcs11-tool.exe --sensitive --private --module "C:\AzureCloudHSM-ClientSDK\AzureCloudHSM-ClientSDK-Windows-1.0.3.0\libs\pkcs11\azcloudhsm_pkcs11.dll" --login --login-type user --pin cu1:user1234 --keygen --key-type AES:32*
以下是橢圓曲線密碼編譯 (ECC) P521 範例:
pkcs11-tool.exe --sensitive --private --module "C:\AzureCloudHSM-ClientSDK\AzureCloudHSM-ClientSDK-Windows-1.0.3.0\libs\pkcs11\azcloudhsm_pkcs11.dll" --login --login-type user --pin cu1:user1234 --keypairgen --key-type EC:prime256v1 --usage-sign
Azure 雲端 HSM 的 SSL/TLS 卸載處理
下列各節回答有關卸除安全套接字層 (SSL) 或傳輸層安全性 (TLS) 處理的相關問題。
適用於 Azure Cloud HSM 的 OpenSSL 引擎是否支援 PKCS#11 以進行 SSL/TLS 卸除?
否。 適用於 Azure Cloud HSM 的 OpenSSL 引擎不支援用於 SSL/TLS 卸除的 PKCS#11。 需要 PKCS#11 進行 SSL/TLS 卸載的客戶必須使用適用於 Azure 受控 HSM 的 TLS 卸載程式庫。
為什麼在執行 azcloudhsm_util 時收到錯誤訊息「無法連線套接字、LIQUIDSECURITY:精靈套接字連線錯誤」?
錯誤訊息表示 azcloudhsm_client 未執行。 請確定 azcloudhsm_client 正在運行,以便 Azure Cloud HSM 工具能夠正常運作。 您可以先從 azcloudhsm_client 確保它以服務模式運行開始,或者在另外的終端機中手動執行以下其中一個命令。
Linux (建議)
如果您使用 DEB 或 RPM 安裝 Azure Cloud HSM SDK,則用戶端不會自動設定為以服務身分執行。 在安裝期間,SDK 會在 /etc/systemd/system/azure-cloud-hsm.service 之下包含一個服務單位檔案。 若要啟用 azcloudhsm_client 以服務身分執行,請使用預先定義的 azure-cloud-hsm.service 檔案。
重新載入 systemd 設定並啟用此服務,以確保它持續運行。 執行下列步驟:
開啟終端機視窗,並將目錄變更為
/etc/systemd/system,其中 Cloud HSM 服務單位檔案所在的位置:cd /etc/systemd/system啟動並啟用雲端 HSM 用戶端服務:
sudo systemctl start azure-cloud-hsm.service sudo systemctl enable azure-cloud-hsm.service檢查雲端 HSM 用戶端服務的狀態:
sudo systemctl status azure-cloud-hsm.service重載設定
systemd:sudo systemctl daemon-reload sudo systemctl list-units --type=service --state=running
Linux (手動)
如果客戶端精靈未執行,請啟動它:
sudo ./azcloudhsm_client azcloudhsm_client.cfg
您也可以使用下列命令,選擇在背景中執行用戶端精靈。 或者,您可以以服務的形式執行用戶端精靈,以確保它一律執行。
sudo ./azcloudhsm_client azcloudhsm_client.cfg > /dev/null 2>&1 &
為什麼我收到「未設定環境變數azcloudhsm_password」錯誤訊息?
錯誤訊息指出未設定必要條件環境變數 azcloudhsm_password 。 若要解決此問題,請將 azcloudhsm_password 環境變數設定為的值 cryptouser:password。
更新您的環境變數,以反映正確的密碼編譯使用者和密碼:
export azcloudhsm_password="cu1:user1234"
當我嘗試匯入金鑰時,為什麼收到錯誤訊息「找不到金鑰/令牌」或「無效的金鑰句柄/令牌」?
錯誤訊息指出指定的包裝金鑰句柄 (KEK 句柄識別元) 不正確。 參數 -f 指定包含匯入索引鍵的檔名,而 -w 則指定包裝索引鍵的句柄。 在創建使用者自生成的 KEK 時,-w 的值應該是您使用者自生成 KEK 的鍵控識別碼。
azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 importPrivateKey -l importTestKey -f key.pem -w 262150
當我嘗試配置 NGINX 來源時,為什麼收到錯誤訊息「/configure: error: 找不到 C 編譯器 cc」?
錯誤訊息指出當您執行 configure 命令時,系統遺漏 C 編譯程式。 視您的安裝而定,在執行下列命令之後,您可能也需要安裝 openssl libssl-dev 和 zlib1g zlib1g-dev。 這些項目是依賴項。
Red Hat 型系統 (使用 YUM)
sudo yum update
sudo yum groupinstall "Development Tools"
Red Hat 型系統 (使用 DNF)
sudo dnf update
sudo dnf install "Development Tools"
以 Ubuntu 為基礎的系統 (使用 APT)
sudo apt update
sudo apt install build-essential
為什麼我收到錯誤訊息「/設定:錯誤:SSL 模組需要 OpenSSL 連結庫」?
錯誤訊息指出需要 OpenSSL 連結庫,才能啟用 NGINX 的 SSL 模組。 若要解決此問題,請執行下列命令,然後再次執行 configure :
sudo apt-get install libssl-dev
為什麼我收到錯誤訊息「/configure:錯誤:HTTP gzip 模組需要 zlib 函式庫」?
錯誤訊息指出 NGINX 中的 HTTP gzip 模組需要 zlib 連結庫。 若要解決此問題,請執行下列命令,然後再次執行 configure :
sudo apt-get install zlib1g-dev
為什麼收到錯誤訊息「HSM 錯誤:RET_USER_LOGIN_FAILURE」?
錯誤訊息指出指定的使用者不存在於您嘗試密碼編譯作業的一或多個節點上。 雖然 Azure Cloud HSM 是在三個節點的叢集中運作,但操作被導向到導致登入失敗的節點。
在這種情況下,會在 AzureCloudHSM-ClientSDK 目錄中產生 critical_err_info_ 檔案。 檔案會顯示「狀態:HSM 錯誤:此使用者不存在」。
若要減輕此錯誤,您必須建立跨 Azure Cloud HSM 部署所有三個節點複寫的密碼編譯使用者 (CU)。 下列範例顯示啟動 azcloudhsm_mgmt_util ,以及系統管理員以密碼編譯人員 (CO) 使用者身分登入。 然後,此範例會建立一個具有 CU 角色的使用者cu1 。
sudo ./azcloudhsm_mgmt_util ./azcloudhsm_mgmt_util.cfg
loginHSM CO admin adminpassword
createUser CU cu1 user1234
logoutHSM
loginHSM CU cu1 user1234
如何顯示我建立的CRT、CSR或金鑰檔案的內容?
若要顯示您在終端機中建立的憑證 (CRT)、憑證簽署要求 (CSR) 或密鑰檔案的內容,請使用下列命令:
cat filename.key
若要顯示隱私權增強郵件 (PEM) 檔案中包含的 X.509 憑證詳細資訊,請使用下列命令。 如果您的 PEM 檔案包含私鑰或其他資料類型,您可能需要據以調整命令。
openssl x509 -in filename.pem -text -noout
若要顯示 CSR 的詳細資訊,請使用下列命令。 此資訊包括主體、公鑰,以及要求中包含的任何屬性。
openssl req -in filename.csr -text -noout
若要顯示 Rivest-Shamir-Adleman (RSA) 私鑰的詳細資訊,請使用下列命令。 此資訊包括索引鍵的模數、公用指數和其他參數。
openssl rsa -in filename.key -text -noout
若要顯示橢圓曲線 (EC) 私鑰的詳細資訊,請使用下列命令。 它會顯示曲線參數、私鑰值和其他相關信息。
openssl ec -in filename.key -text -noout
如何在 Azure Cloud HSM 中產生ED25519密鑰組以進行簽署?
ED25519金鑰通常用於自我簽署憑證或直接使用私鑰的憑證簽署程式中。 您可以使用 azcloudhsm_util 或使用適用於 Azure Cloud HSM 的 OpenSSL 引擎來產生 ED25519 密鑰組。
這很重要
不建議使用 openssl genpkey 或 openssl ecparam。 使用 openssl genpkey 或 openssl ecparam 搭配 -engine azcloudhsm_openssl 來產生ED25519或 ECCKeyPair 金鑰不會產生 HSM 金鑰。 相反地,它會產生軟體密鑰。 如果您需要ED25519或其他 EC 金鑰類型,您必須使用 azcloudhsm_util 在 HSM 內建立金鑰。
Openssl genpkey 和 openssl ecparam 都是用來產生密碼編譯密鑰的 OpenSSL 命令,但它們有不同的用途,並支援不同的密鑰類型。 當您需要產生廣泛的非對稱密碼編譯密鑰時,請使用 openssl genpkey ,包括 RSA、DSA、ECDSA 和ED25519密鑰。
openssl ecparam特別用於產生橢圓曲線密碼編譯密鑰 (ECDSA),例如 prime256v1、secp384r1 或 secp521r1。
./azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 genECCKeyPair -i 28 -l labelED25519Test
是否可以先使用 azcloudhsm_util 產生 RSA 和 EC 金鑰,再使用 Azure Cloud HSM OpenSSL 引擎來產生 CSR?
是的。 您可以執行下列 azcloudhsm_util 命令來建立 RSA 或 EC 金鑰,然後將私鑰擷取為假 PEM 格式。 將取代 {PRIVATE_KEY_HANDLE} 為您建立之 RSA 或 EC 金鑰的私鑰句柄。
PEM 格式的私鑰元資料檔案不包含任何敏感性私鑰數據。 元數據會識別私鑰,而且只有適用於 Azure Cloud HSM 的 OpenSSL 引擎才能瞭解此檔案。
使用此指令來建立 RSA 金鑰:
./azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 genRSAKeyPair -m 2048 -e 65537 -l labelRSATest
./azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 getCaviumPrivKey -k {PRIVATE_KEY_HANDLE} -out web_server_fake_PEM.key
openssl req -new -key web_server_fake_PEM.key -out web_server.csr -engine azcloudhsm_openssl
openssl x509 -req -days 365 -in web_server.csr -signkey web_server_fake_PEM.key -out web_server.crt -engine azcloudhsm_openssl
使用此指令來建立 EC 金鑰:
./azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 genECCKeyPair -i 2 -l labelECTest
./azcloudhsm_util singlecmd loginHSM -u CU -p user1234 -s cu1 getCaviumPrivKey -k {PRIVATE_KEY_HANDLE} -out web_server_fake_PEM.key
openssl req -new -key web_server_fake_PEM.key -out web_server.csr -engine azcloudhsm_openssl
openssl x509 -req -days 365 -in web_server.csr -signkey web_server_fake_PEM.key -out web_server.crt -engine azcloudhsm_openssl
適用於 Azure 雲端 HSM 的 SQL Server EKM
下列各節回答與 SQL Server 中可延伸金鑰管理 (EKM) 功能相關的問題。
適用於 Azure 雲端 HSM 的 SQL Server EKM 提供者是否支援對稱密鑰?
否。 SQL Server 不支援透明數據加密的對稱金鑰。 僅支援非對稱金鑰。
適用於 Azure 雲端 HSM 的 SQL Server EKM 提供者是否支援 Linux 上的 SQL Server?
否。 適用於 Azure Cloud HSM 的 SQL Server EKM 提供者僅支援 Windows Server。
適用於 Azure 雲端 HSM 的 SQL Server EKM 提供者是否支援 SQL Server SaaS/PaaS?
否。 Azure 雲端 HSM 僅限基礎結構即服務(IaaS)。 軟體即服務 (SaaS) 或平臺即服務 (PaaS) 客戶應該使用 Azure 受控 HSM,其支援 Azure SQL Database 和 Azure SQL 受控實例的透明數據加密。
適用於 Azure Cloud HSM 的 SQL Server EKM 提供者是否支援多個登入、認證和連線?
對於適用於 Azure Cloud HSM 的 SQL Server EKM 提供者,登入或 SQL 聯機會受到限制,而且只能指派單一認證。
為什麼我收到錯誤訊息:「錯誤:無法初始化密碼編譯提供者。 提供者錯誤碼:1。 (失敗 - 如需詳細資訊,請參閱 EKM 提供者)?」
安裝 SQL Server 之後,當您執行 Azure Cloud HSM 的 MSI 套件時,可能會發生此錯誤。 當您重新啟動 SQL Server 時,就會消失錯誤。 此時,它會挑選您在執行 Azure Cloud HSM MSI 套件時所建立的環境變數和設定。
AD CS 與 Azure Cloud HSM 整合
下列各節回答與 Active Directory 憑證服務 (AD CS) 相關的問題。
當我嘗試使用提供的範例,從Microsoft KSP 移轉憑證時,為什麼收到錯誤訊息「無法開啟 openssl-ca.cnf 檔案」?
當您嘗試從金鑰儲存提供者 (KSP) 移轉憑證時, openssl-ca.cnf 檔案不存在時,通常會發生此錯誤。 您可以自行建立檔案,或從另一個來源取得檔案。
我可以在公司網路中使用自己的簽署伺服器,以使用 Azure Cloud HSM 作為 SaaS 解決方案嗎?
Azure 雲端 HSM 僅限 IaaS。 不過,您可以在公司網路中使用自己的簽署伺服器。
您可以從局域網路閘道設定站對站或點對站 VPN 連線。 這是最常見的方法,適用於大部分的使用案例。 設定公司網路內部部署伺服器與部署 Azure Cloud HSM 位置之間的 VPN 連線。 如需詳細資訊,請參閱 教學課程:在 Azure 入口網站中建立站對站 VPN 連線。
您可以為簽署伺服器在內部部署 AD CS。 SDK 必須位於您的內部部署主機上,且客戶端必須可連線到 Azure 虛擬網路中的私人 IP 位址。 下列為適用需求:
- 您需要在安裝有 Azure 雲端 HSM 密碼編寫 API:下一代 (CNG) 提供者的同一台電腦上執行
azcloudhsm_client。 - 此工具
azcloudhsm_client應該能夠與 Azure 虛擬網路的私人 IP 通訊。
當我們測試 AD CS 時,我們產生了 RSA 金鑰組,然後使用憑證管理進行簽署。
只有透過 Cloud HSM 提供者(例如,azcloudhsm_util)才能進行簽署或驗證嗎?
否。 我們建議使用 Azure Cloud HSM SDK 及其提供的介面(例如 PKCS#11、CNG、KSP、JCE 和 OpenSSL 引擎)。 您也可以使用簽署工具 (signtool.exe) 進行簽署或驗證作業。
AD CS 已設定為使用 CNG 或 KSP for Azure Cloud HSM。
我是否可以透過 signtool.exe使用 Cloud HSM 的簽名/驗證功能?
是的。 簽署工具會自動移至您的雲端 HSM 部署。 不需要使用 azcloudhsm_util。 我們在指示中包含了 azcloudhsm_util,為了讓客戶能夠快速測試及驗證其 AD CS 設定。
我是否可以根據 Cloud HSM 中的金鑰組使用自我簽署憑證進行測試?
是的。 您可以根據金鑰組使用自我簽署憑證進行測試。
是否有整合或方法可透過本機 Windows 證書存儲提供憑證?
您可以針對此目的使用 certreq.exe 此工具。
適用於 Azure 雲端 HSM 的 CNG 和 KSP 提供者支援哪些演算法?
- RSA 加密和解密
- 使用 SHA1、SHA256、SHA384、SHA512 和 MD5 哈希演算法的 RSA 簽署
- ECC 曲線ECDSA_P256、ECDSA_P384和ECDSA_P521
如何變更或管理 Windows 上非管理使用者的私鑰許可權?
當您使用適用於 Azure Cloud HSM 的 KSP 或 CNG 產生密鑰時,只有系統管理員獲得私鑰的存取權。 您可能無法透過 Microsoft Management Console 檢視安全性資訊或修改許可權。 這是刻意的行為。
根據預設,當您使用 KSP 或 CNG 時,新金鑰的私鑰檔案存取權僅限於 SYSTEM 和系統管理員。 如果您需要針對特定私鑰檔案提供非管理使用者的存取權,請識別私鑰的檔名,並直接指派許可權。 私鑰位於 Windows 上的雲端 HSM 金鑰目錄中 C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP 。
azcloudhsm_ksp_import_key.exe 做什麼?
您可以使用 azcloudhsm_ksp_import_key.exe 匯入或代表雲端 HSM KSP 中的非對稱金鑰。
支持的演算法是 RSA (2048 到 4096,其倍數為 256)、ECDSA 和 ECDH。 針對ECDSA和ECDH,支援的曲線為 P256、P384 和 P521。 匯入或展現在雲端 HSM KSP 中的金鑰之後,您應該僅透過雲端 HSM KSP 來管理金鑰。
從公司網路連線到雲端 HSM 的建議方式為何(作業/系統管理員工作)?
您可以透過虛擬網路連線。 使用這些工具:
- 工具
azcloudhsm_mgmt_util會執行操作(HSM 上的管理工作)。 它需要分區加密專員(PCO)的認證。 - 此工具
azcloudhsm_client(用戶端精靈)會透過分區加密使用者(PCU)的憑據來進行連線。
此工具 azcloudhsm_client 和您的應用程式必須在虛擬網路內的相同 VM 上執行。 原因是應用程式會透過遠端過程調用 (RPC) 連接到客戶端進程。
Azure 雲端 HSM 服務會接聽埠 443(azcloudhsm_client 要求)、444(azcloudhsm_mgmt_util 要求)和 445(伺服器對伺服器通訊)。
前端埠是 TCP over TLS 通訊協定的 2224 和 2225。 這些埠僅適用於客戶。