会计集成中出现“未提供密码的 PKCS12 (PFX)已超出允许的最大迭代次数”错误

本文提供了Microsoft Dynamics 365 Commerce 中会计集成过程中发生的错误的解决方案。

现象

在会计注册过程中,尝试提交会计文档时,会收到以下错误消息:

未提供密码的 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)

详细信息