我正在通过我的Java代码连接到oracle ssl侦听器。Java代码在AWS Lambda中运行。为了通过SSL端口连接到oracle,我需要通过cwallet.sso证书。该证书是base64编码的,并存储在Vault中。我可以从Vault中以String形式获取证书的内容。我需要对base64进行解码并使用其内容来连接到oracle。在我在本地计算机中用于连接到oracle ssl端口的代码下面。由于我从Vault中获取数据作为流,是否有一种方法可以提供证书(cwallet.sso),而无需创建文件?DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Security.addProvider(new oracle.security.pki.OraclePKIProvider()); String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>)(PORT=1522))(CONNECT_DATA=(SID=<SID>)))"; java.util.Properties info = new java.util.Properties(); ClassLoader classLoader = getClass().getClassLoader(); info.setProperty("javax.net.ssl.trustStore", Paths.get(classLoader.getResource("certs/cwallet.sso").toURI()).toString()); info.setProperty("javax.net.ssl.trustStoreType", "SSO"); info.setProperty("user", "username"); info.setProperty("password", "password"); Connection conn = DriverManager.getConnection(url, info); Statement stmt = conn.createStatement();
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
通常,可以从内存中加载证书,例如此处概述的,但是在当前上下文中,我们受到Oracle驱动程序支持的限制。
驱动器的配置是描述在这里,它看起来并不像什么,除了支持基于文件的信任存储。由于Oracle驱动程序是封闭源代码,因此很难提供更明确的答案。
添加回答
举报
0/150
提交
取消