Udostępnij za pośrednictwem


Błąd "PKCS12 (PFX) bez podanego hasła przekroczył maksymalną dozwoloną iterację" w integracji fiskalnej

Ten artykuł zawiera rozwiązanie błędu występującego w procesie integracji fiskalnej w usłudze Microsoft Dynamics 365 Commerce.

Symptomy

W procesie rejestracji fiskalnej podczas próby przesłania dokumentu fiskalnego zostanie wyświetlony następujący komunikat o błędzie:

PKCS12 (PFX) bez podanego hasła przekroczyła maksymalną dozwoloną iterację. Aby uzyskać więcej informacji, zobacz https://go.microsoft.com/fwlink/?linkid=2233907 (Otwiera się w nowym oknie lub karcie).

Rozwiązanie

Wymagania wstępne

Przed zbadaniem problemu należy wiedzieć, który typ certyfikatów jest obsługiwany w danym scenariuszu.

  • Jeśli system zakupu działa w trybie offline, obsługiwane są tylko certyfikaty lokalne.
  • W przypadku jednostki skalowania handlu (CSU) (w chmurze) obsługiwane są tylko certyfikaty z usługi Azure Key Vault .
  • W przypadku własnych jednostek CSU obsługiwane są certyfikaty zarówno z usługi Azure Key Vault, jak i magazynu lokalnego.

Eksportowanie certyfikatu PFX bez hasła

Jeśli certyfikaty z usługi Azure Key Vault są używane do podpisywania cyfrowego, certyfikaty przekazane do usługi Azure Key Vault powinny zawierać klucz prywatny i nie mają hasła.

W przypadku wyeksportowania certyfikatu przy użyciu Kreatora eksportu certyfikatów należy wybrać format certyfikatu wymiany informacji osobistych (PFX) i zostanie wyświetlony monit o wprowadzenie hasła. Jednak certyfikaty z hasłami nie są obsługiwane w przypadku logowania cyfrowego w usłudze Microsoft Dynamics 365 Commerce. Uruchom następujący skrypt, aby usunąć hasło z certyfikatu 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)

Więcej informacji