會計整合中的「沒有提供密碼的 PKCS12 (PFX) 已超過允許的反覆運算上限」錯誤
本文提供 dynamics 365 Commerce 中會計整合 Microsoft程式中發生之錯誤的解決方案。
徵兆
在會計註冊程式中,當您嘗試提交會計檔時,您會收到下列錯誤訊息:
沒有提供密碼的 PKCS12 (PFX) 已超過允許的最大反覆專案。 如需詳細資訊,請參閱 https://go.microsoft.com/fwlink/?linkid=2233907 (在新視窗或索引標籤中開啟)。
解決方法
必要條件
在探索問題之前,您應該知道案例中支援哪種類型的憑證。
- 如果 POS 是以離線模式執行,則僅支援本機憑證。
- 針對商務規模單位 (CSU) (雲端),僅支援來自 Azure 金鑰保存庫 的憑證。
- 針對自我裝載的 CSU,支援來自 Azure 金鑰保存庫 和本機記憶體的憑證。
匯出不含密碼的 PFX 憑證
如果使用來自 Azure 金鑰保存庫 的憑證進行數位簽名,則上傳至 Azure 金鑰保存庫 的憑證應包含私鑰,且沒有密碼。
如果您使用 [憑證匯出精靈] 導出憑證, 應該選取個人資訊交換 (PFX) 憑證 格式,並提示您輸入密碼。 不過,Microsoft Dynamics 365 Commerce 中的數位簽名不支援具有密碼的憑證。 執行下列文稿以從 PFX 憑證中移除密碼:
$pfxFilePath = '<Localpath of the pfx certificate>'
$pwd = '<Password of the pfx certificate>'
$collection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$collection.Import($pfxFilePath, $pwd, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pkcs12ContentType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12
$certBytes = $collection.Export($pkcs12ContentType)
[System.IO.File]::WriteAllBytes($pfxFilePath, $certBytes)