使用Oracle Advanced Security Options管理Oracle客户端

Pie*_* SS 1 .net oracle odp.net entity-framework-6 oracle12c

10月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

我们确实与DBA确认我们使用的是支持的加密算法.

此时,我唯一的其他设置如下:

  <settings>
    <setting name="SQLNET.AUTHENTICATION_SERVICES" value="NTS" />
    <setting name="NAMES.DIRECTORY_PATH" value="LDAP,tnsnames" />
  </settings>
Run Code Online (Sandbox Code Playgroud)

Chr*_*hay 5

编辑:升级到ODP.NET托管12.2或更高版本.那里引入了对数据完整性算法的支持:https://docs.oracle.com/cd/E85694_01/ODPNT/featConnecting.htm#ODPNT8536

ODP.NET,托管驱动程序12.1及更早版本尚不支持数据完整性算法:

http://docs.oracle.com/cd/E63277_01/win.121/e63268/featConnecting.htm#CJAGFFCA

这导致TNS-12599:TNS:数据库警报日志中的加密校验和不匹配错误,这反过来导致各种客户端错误,例如ORA-12570:网络会话:意外的数据包读取错误或ORA-12537:网络会话:结束文件.

如果您被迫使用ODP.NET托管版本12.1并且无法升级到12.2或更高版本,可以通过更改数据库端SQLNET.ORA参数来修复此问题,以便不需要校验和:

sqlnet.crypto_checksum_client = ACCEPTED

sqlnet.crypto_checksum_server = ACCEPTED