Управляемый клиент Oracle с опциями расширенной безопасности Oracle
14 октября Oracle выпустила последнюю версию своего Oracle Managed Client, которая была описана для поддержки сетевого шифрования данных.
http://www.oracle.com/technetwork/topics/dotnet/tech-info/odac12cr4ds-2704217.pdf https://www.nuget.org/packages/Oracle.ManagedDataAccess/
Хотя по какой-то причине после попытки множественной конфигурации мы все равно не смогли заставить ее работать. Мы продолжаем получать печально известную ORA-12570: Network Session: Unexpected packet read error
исключение, заключенное в The provider did not return a ProviderManifestToken string
, Ошибка в журнале предупреждений заключается в следующем TNS-12599: TNS:cryptographic checksum mismatch
Мы подтвердили администратору базы данных, что мы используем поддерживаемый алгоритм шифрования.
На данный момент, мои единственные дополнительные настройки следующие:
<settings>
<setting name="SQLNET.AUTHENTICATION_SERVICES" value="NTS" />
<setting name="NAMES.DIRECTORY_PATH" value="LDAP,tnsnames" />
</settings>
1 ответ
РЕДАКТИРОВАТЬ: Обновление до ODP.NET Managed 12.2 или более поздней версии. Поддержка алгоритмов целостности данных была представлена там: https://docs.oracle.com/cd/E85694_01/ODPNT/featConnecting.htm
ODP.NET, Managed Driver 12.1 и более ранние версии еще не поддерживали алгоритмы целостности данных:
http://docs.oracle.com/cd/E63277_01/win.121/e63268/featConnecting.htm
Это приводит к тому, что TNS-12599: TNS: ошибка несоответствия криптографической контрольной суммы в журнале предупреждений базы данных, что, в свою очередь, приводит к различным ошибкам на стороне клиента, таким как ORA-12570: Сетевой сеанс: непредвиденная ошибка чтения пакета или ORA-12537: Сетевой сеанс: Конец файл.
Если вы вынуждены использовать версию 12.1, управляемую ODP.NET, и не можете выполнить обновление до 12.2 или более поздней версии, это можно исправить, изменив параметры SQLNET.ORA на стороне базы данных, чтобы контрольные суммы НЕ ТРЕБУЮТСЯ:
sqlnet.crypto_checksum_client = ПРИНЯТО
sqlnet.crypto_checksum_server = ПРИНЯТО