0

我想使用 ODP.Net 和 C# 并使用加密连接连接到 Oracle DB。目前目标数据库设置为接受加密和未加密的连接。不幸的是,即使配置为只接受加密的连接,我的单元测试也总是连接到没有加密的数据库。

我的代码如下所示:

OracleConnection myConnection = new OracleConnection("Data Source=MyDataSource;User Id=userid; Password = ***");
myConnection.Open();

OracleCommand myStoredProcedureCall = new OracleCommand();
myStoredProcedureCall.Connection = myConnection;

//Some calls to an Oracle DB

我的 app.config 中有以下配置

<oracle.manageddataaccess.client>
  <version number="*">
    <dataSources>
      <dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port)))(CONNECT_DATA=(SID=SID)(SERVER=DEDICATED))(SECURITY=(SSL_VERSION=1.2)(SSL_SERVER_CERT_DN=&quot;cn=CertDN&quot;)))" />
    </dataSources>
    <settings>
      <setting name="TraceLevel" value="7" />
      <setting name="TraceOption" value="0" />
      <setting name="TraceFileLocation" value="C:\Temp" />

      <setting name="TNS_ADMIN" value="<projectDir>\ExternalRefs\network\admin\productive" />
    </settings>
  </version>
</oracle.manageddataaccess.client>

我还检查了 bapp.config 中的其他条目是否按照 Oracle 安装指南的建议进行设置(请参阅安装指南

在我的 sqlnet.ora 中,我有以下条目:

# sqlnet.ora Network Configuration File
SSL_SERVER_DN_MATCH = yes
SSL_VERSION         = 1.2
sqlnet.encryption_types_client = (AES256)
sqlnet.encryption_client = required 

sqlnet.crypto_checksum_client = required 
sqlnet.crypto_checksum_types_client = (SHA1)

根据我的跟踪日志,这个文件和它的配置值被读取。

据我所知,我尽一切努力强制加密连接,但它仍然没有加密连接。但是也没有错误,但是单元测试只是使用了未加密的连接,而忽略了我的配置。

有两件事不是标准的:a) 由于网络限制,我不允许从在线源安装所需的 NuGet-Packages。我从 Oracle 下载了它们,然后只是从文件系统安装了它们,但仍然使用 NuGet 包管理器 b) 安装指南提到了以下必须修改的条目:

<configuration>
  <connectionStrings>
    <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" />
  </connectionStrings>
</configuration>

当我在单元测试中提供硬编码的连接字符串时,假设不需要它,我没有改变这个字符串。

有趣的是,sqlnet.ora 中的配置值似乎都没有经过验证。如果我配置一个不存在的密码(例如 BlaBla 而不是 AES256),仍然没有错误。此外,我尝试在 sqlnet.ora 中使用不同的拼写(大写而不是小写),因为我发现的每个样本似乎都使用其他拼写。

任何想法我可以进一步检查将不胜感激:-)

4

0 回答 0