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



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

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

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

public static void main(字符串args[]({尝试{字符串Teiid_SSL_URL=";jdbc:teiid:LocalMSSQLMS@mms://localhost:32750";;

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("nnConnection-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();
}

}

=============================================

上述代码的输出:

Connection-1成功

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

org.teiid.ssl.trustStorePassword->testssl

Connection-2成功

org.teiid.ssl.trustStore->abc

org.teiid.ssl.trustStorePassword->abc

=================================================

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

如果缺少任何其他客户端配置,请告诉我。否则,你能不能调查一下这个问题,并让我知道什么时候可以解决这个问题。

谢谢,Megha

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

相关内容

  • 没有找到相关文章

最新更新