Erreur « PKCS12 (PFX) sans mot de passe fourni a dépassé le nombre maximal d’itérations autorisées » dans l’intégration fiscale
Cet article fournit une solution pour une erreur qui se produit dans un processus d’intégration fiscale dans Microsoft Dynamics 365 Commerce.
Symptômes
Dans un processus d’inscription fiscale, lorsque vous essayez d’envoyer un document fiscal, vous recevez le message d’erreur suivant :
PKCS12 (PFX) sans mot de passe fourni a dépassé le nombre maximal d’itérations autorisées. Pour plus d’informations, consultez https://go.microsoft.com/fwlink/?linkid=2233907 (Ouvre dans une nouvelle fenêtre ou un nouvel onglet).
Résolution
Prerequisites
Avant d’explorer le problème, vous devez savoir quel type de certificats est pris en charge dans votre scénario.
- Si le point de vente s’exécute en mode hors connexion, seuls les certificats locaux sont pris en charge.
- Pour l’unité d’échelle commerciale (CSU) (cloud), seuls les certificats d’Azure Key Vault sont pris en charge.
- Pour l’authentification unique auto-hébergée, les certificats d’Azure Key Vault et de stockage local sont pris en charge.
Exporter un certificat PFX sans mot de passe
Si les certificats d’Azure Key Vault sont utilisés pour la signature numérique, les certificats chargés vers Azure Key Vault doivent contenir la clé privée et n’ont pas de mot de passe.
Si vous exportez le certificat à l’aide de l’Assistant Exportation de certificat, un format de certificat PFX (Personal Information Exchange) doit être sélectionné et vous êtes invité à entrer un mot de passe. Toutefois, les certificats avec mots de passe ne sont pas pris en charge pour la connexion numérique dans Microsoft Dynamics 365 Commerce. Exécutez le script suivant pour supprimer le mot de passe d’un certificat 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)