Udostępnij za pośrednictwem


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

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

Symptomy

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

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

Rozwiązanie

Wymagania wstępne

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

  • Jeśli program poświadczania obsługi klienta jest uruchomiony w trybie offline, obsługiwane są tylko certyfikaty lokalne.
  • W przypadku usługi Commerce Scale Unit (CSU) (w chmurze) obsługiwane są tylko certyfikaty z usługi Azure Key Vault.
  • W przypadku samodzielnie hostowanej jednostki 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 mieć hasła.

W przypadku eksportowania 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 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