Condividi tramite


Errore "PKCS12 (PFX) senza una password specificata ha superato il numero massimo di iterazioni consentite" nell'integrazione fiscale

Questo articolo fornisce una soluzione per un errore che si verifica in un processo di integrazione fiscale in Microsoft Dynamics 365 Commerce.

Sintomi

In un processo di registrazione fiscale, quando si tenta di inviare un documento fiscale, viene visualizzato il messaggio di errore seguente:

PKCS12 (PFX) senza una password specificata ha superato il numero massimo di iterazioni consentite. Per altre informazioni, vedere https://go.microsoft.com/fwlink/?linkid=2233907 (Apre in una nuova finestra o scheda).

Risoluzione

Prerequisiti

Prima di esplorare il problema, è necessario sapere quale tipo di certificati è supportato nello scenario.

  • Se POS è in esecuzione in modalità offline, sono supportati solo i certificati locali.
  • Per Commerce Scale Unit (CSU) (cloud) sono supportati solo i certificati di Azure Key Vault .
  • Per la CSU self-hosted, sono supportati i certificati di Azure Key Vault e dell'archiviazione locale.

Esportare un certificato PFX senza password

Se i certificati di Azure Key Vault vengono usati per la firma digitale, i certificati caricati in Azure Key Vault devono contenere la chiave privata e non avere una password.

Se si esporta il certificato tramite Esportazione guidata certificati, deve essere selezionato un formato di certificato PFX (Personal Information Exchange) e verrà richiesto di immettere una password. Tuttavia, i certificati con password non sono supportati per l'accesso digitale in Microsoft Dynamics 365 Commerce. Eseguire lo script seguente per rimuovere la password da un certificato 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)

Ulteriori informazioni