Показать сообщение отдельно
Старый 31.08.2018, 01:53   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от 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. В общем, проверьте, той ли системы у вас сертификат для шифрования данных.
За это сообщение автора поблагодарили: sukhanchik (6), IvanS (1), vmoskalenko (2).