java - 设置文件内容而不是信任库的路径
问题描述
我正在通过我的 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");
解决方案
推荐阅读
- javascript - 异步函数似乎只返回“[object Promise]”
- sql - PostgreSQL - 如何插入复合类型的数组
- java - Micronaut / Gradle / Kotlin 找不到 dll 文件
- android-studio - 身体单击时的单选按钮侦听器
- vba - MS Word 数量必须在 1 到 {n} 个 Cells.Split 行数之间 [错误 5148]
- python - ValueError:无法解释输入“State/UnionTerritory”
- android - 将数据从 ViewModel 发送到 ViewModel 并在 ViewPages 上显示
- javascript - AngularJS- TypeError: $element.find(...).each 不是函数
- html - 使用 justify-content: center 时列表被剪切
- vb.net - 快速 Ping 网络