Цитата:
Сообщение от
IvanS
В общем при отправке сообщений падает ошибка в момент дешифровки пароля smtp: Ошибка в методе Global::editEncryptedField на строке
X++:
return appl.DecryptForPurpose(_common.(_fieldId), common.encryptionPurpose(_fieldId));
Из подробностей только
Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured.
Есть у кого идеи как отправлять сообщения?
Не уверен, что дело в этом, но у меня был похожий случай во время установки D365O on-premises
Суть была в том, что надо было сгенерить сертификат для Data Encryption непременно с использованием
Microsoft Enhanced RSA and AES Cryptographic Provider - прям
жирным шрифтом выделено в инструкции. Я сдуру
решил генерить сертификат через местный CA, а не самоподписанный, говорю ему - сделай такой-то, он мне - пожалуйста! Я посмотрел, пощупал, понюхал - вроде то, что надо, разлил везде эти сертификаты, начал ставить... А через какое-то время на установке, кажется, Management Reporter полезла ошибка, связанная с криптографией, вот прям такая же информативная:
Код:
Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured.
Не буду рассказывать, как я 3 дня с ней бодался, но в итоге выяснилось, что за кулисами вылезала ошибка
Код:
System.Security.Cryptography.CryptographicException: Invalid provider type specified
Это было уже намного лучше - оказалось, что местный CA молча сгенерил мне сертификат не для Microsoft Enhanced RSA and AES Cryptographic Provider, как я просил, а для
Microsoft RSA SChannel Cryptographic Provider, потому что другие провайдеры, видите ли, были на нем не включены. В коде же вспомогательной сборки (Microsoft.Dynamics.AX.Framework.EncryptionEngine.dll) явным образом используется
RSACryptoServiceProvider, который, собака, поддерживает только то, что сгенерил Microsoft Enhanced RSA and AES Cryptographic Provider. Внимание, вопрос, а как он это узнает по сертификату? Оказалось, что в свойствах закрытого ключа
под особым микроскопом можно разглядеть такое:
Код:
[Private Key]
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider type: 12
А у правильного сертификата для шифрования данных должно быть вот так:
Код:
[Private Key]
Provider Name: Microsoft Enhanced RSA and AES Cryptographic Provider
Provider type: 24
При этом кроме циферок 12/24 сертификаты могут больше ничем не отличаться - у обоих будет, скажем, использоваться SHA256 и RSA 2048. В общем, проверьте, той ли системы у вас сертификат для шифрования данных.