首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统属性中的Teiid客户端SSL设置未按预期工作

系统属性中的Teiid客户端SSL设置未按预期工作
EN

Stack Overflow用户
提问于 2020-12-18 13:44:34
回答 1查看 33关注 0票数 0

我有一个teiid嵌入式服务器,我正在尝试从我的远程客户机通过SSL连接到该服务器上的vds,方法是按照位于:http://teiid.github.io/teiid-documents/12.3.x/content/client-dev/SSL_Client_Connections.html的teiid文档在SystemProperties中传递teiid SSL属性。

当我第一次获得连接时,传入系统属性的客户端SSL属性工作正常。然而,在同一会话中,当我第二次更改系统属性并创建连接时,teiid驱动程序似乎忽略了它,并使用第一个连接的系统属性值创建连接。

以下是复制此问题的代码片段:

公共静态void main(String args[]) { try { String Teiid_SSL_URL = "jdbc:teiid:LocalMSSQLMS@mms://localhost:32750";

代码语言:javascript
复制
  Properties properties = new Properties();
  properties.put("user", "admin");
  properties.put("password", "admin");

  //CONNECTION-1 with valid SSL property values in System properties
  System.setProperty("org.teiid.ssl.trustStore", "C:/truststore.p12");
  System.setProperty("org.teiid.ssl.trustStorePassword", "testssl");

  DriverManager.registerDriver(new TeiidDriver());
  Connection connection1 = DriverManager.getConnection(Teiid_SSL_URL, properties);
  if (connection1.isValid(1000))
  {
    System.out.println("Connection-1 success");
    System.out.println("org.teiid.ssl.trustStore ->" + System.getProperty("org.teiid.ssl.trustStore"));
    System.out.println("org.teiid.ssl.trustStorePassword ->" + System.getProperty("org.teiid.ssl.trustStorePassword"));
  }

  //CONNECTION-2 with invalid SSL property values in System properties
  System.setProperty("org.teiid.ssl.trustStore", "abc");
  System.setProperty("org.teiid.ssl.trustStorePassword", "abc");

  Connection connection2 = DriverManager.getConnection(Teiid_SSL_URL, properties);
  if (connection2.isValid(1000))
  {
    System.out.println("\n\nConnection-2 success");
    System.out.println("org.teiid.ssl.trustStore ->" + System.getProperty("org.teiid.ssl.trustStore"));
    System.out.println("org.teiid.ssl.trustStorePassword ->" + System.getProperty("org.teiid.ssl.trustStorePassword"));
  }

}
catch (Exception e)
{
  e.printStackTrace();
}

}

====

以上代码的输出:

连接-1成功

org.teiid.ssl.trustStore ->C:/truststore.p12

org.teiid.ssl.trustStorePassword ->testssl

连接-2成功

org.teiid.ssl.trustStore ->abc

org.teiid.ssl.trustStorePassword ->abc

====

这里,在第二个连接的情况下,因为信任库是无效的,它应该抛出错误。但是,它正在成功创建连接-2。如果在具有有效值的connection-1之前创建具有无效值的-2\f25 connection-2 \f6,则驱动程序会如预期的那样抛出错误。因此,得出的结论是,它只是第一次将SSL设置视为系统属性。对于之后的任何其他连接调用,无论设置了什么系统属性,它都只使用第一次调用之前设置的属性。

如果缺少任何额外的客户端配置,请让我知道。否则,请您调查这个问题,并让我知道什么时候可以修复这一点。

谢谢,Megha

EN

回答 1

Stack Overflow用户

发布于 2020-12-22 23:19:55

这是预期的,因为在最初创建套接字工厂时,系统属性是只读的。在相同的vs中很难做到这一点-你必须使用不同的类加载器,在每次你想要改变设置时加载驱动程序jar。否则,您需要创建单独的vms。您可以记录问题,但它的优先级非常低。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65352305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档