【发布时间】:2018-11-28 12:50:07
【问题描述】:
我正在通过我的 java 代码连接到 oracle ssl 侦听器。 Java 代码在 AWS Lambda 中运行。为了通过 SSL 端口连接到 oracle,我需要通过 cwallet.sso 证书。此证书采用 base64 编码并存储在保险库中。我能够从保险库中以字符串形式获取证书的内容。我需要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();
ResultSet rset = stmt.executeQuery("select * from table where rownum < 10");
【问题讨论】:
-
你能提供更多细节吗?
-
@SazzadurRahaman 添加了更多细节。
标签: java oracle java-8 java-io truststore