"指定されたパスワードを使用しない PKCS12 (PFX) が、許可されるイテレーションの最大数を超えました" という会計統合エラー

この記事では、Microsoft Dynamics 365 Commerceの会計統合プロセスで発生するエラーの解決策について説明します。

現象

会計登録プロセスでは、会計ドキュメントを送信しようとすると、次のエラー メッセージが表示されます。

パスワードが指定されていない PKCS12 (PFX) が、許可される最大反復数を超えています。 詳細については、「 https://go.microsoft.com/fwlink/?linkid=2233907 (新しいウィンドウまたはタブで開く)」を参照してください。

解決方法

前提条件

この問題を調査する前に、シナリオでサポートされている証明書の種類を把握しておく必要があります。

  • POS がオフライン モードで実行されている場合は、ローカル証明書のみがサポートされます。
  • Commerce Scale Unit (CSU) (クラウド) ではAzure Key Vaultからの証明書のみがサポートされます。
  • セルフホステッド CSU の場合、Azure Key Vault とローカル ストレージの両方からの証明書がサポートされます。

パスワードなしで PFX 証明書をエクスポートする

Azure Key Vaultの証明書をデジタル署名に使用する場合、Azure Key Vaultにアップロードされた証明書には秘密キーが含まれており、パスワードは含まれていない必要があります。

証明書のエクスポート ウィザードを使用して証明書をエクスポートする場合は、 個人情報交換 (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)

詳細