gpt4 book ai didi

java - 如何将 Windows keystore (MCS) 与 JDBC 一起使用?

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:08 25 4
gpt4 key购买 nike

我正在尝试创建一个使用 PKI 进行身份验证的 java 应用程序。我需要能够从 Microsoft 证书存储 (MCS) 检索证书并将其传递到 Oracle 数据库 (11.2)。

我正在使用 jdbc:oracle:thin 驱动程序进行连接。在谷歌上花了很长时间后,我一无所获。我发现要更改的不同属性(取决于文章):

  • 设置属性 javax.net.ssl.keyStoreType = "Windows-MY"
  • 设置 javax.net.ssl.keyStore = "Windows-MY"
  • javax.net.ssl.keyStore 应该设置为“无”(如果使用自定义 KeyManager,我认为它不会起作用,因为当它进入我的自定义 KeyManager 时,我已经从连接属性中指定的 keystore 中获得证书)。

当然,所有这些人都声称成功,但对我来说没有任何效果。我已经尝试了所有我能找到的例子,但没有运气。我在使用 Oracle 钱包时能够成功进行身份验证,因此我知道我的证书没有问题。如果有人以前这样做过并且愿意发布一些代码那就太好了。

我知道大多数人都在网站上使用 Windows keystore ,因此正在创建他们自己的 SSLContext,但我无法想象我是唯一一个想使用 JDBC 来做到这一点的人(据我所知,这是不允许的我为它提供一个 SSLContext)。

这是我认为应该有效但无效的代码。

DriverManager.registerDriver)new OracleDriver());
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=host)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=someName))(SECURITY= (SSL_SERVER_CERT_DN=\"CN=TESTSERVER\")))";

java.util.Properties props = new java.util.Properties();
props.setProperty("javax.net.ssl.keyStoreType", "Windows-MY");
props.setProperty("javax.net.ssl.keyStore", "NONE");
props.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");
props.setProperty("javax.net.ssl.trustStore", "NONE");

props.setProperty("oracle.net.ssl_server_dn_match", "true");
props.setProperty("oracle.net.authentication_services", "(TCPS)");
Connection conn = DriverManager.getConnection(url, props);

此代码失败并出现异常:

java.sql.SQLRecoverableException: IOException: The Network Adapter could not establish the connection

最佳答案

This article应该给你更多的细节。虽然它不使用系统属性,但 Windows-MY 显然是一种存储类型,它不是基于文件的。因此,javax.net.ssl.keyStoreType 应为 Windows-MY 并且 javax.net.ssl.keyStore 应设置为 NONE(大写可能很重要),参见 JSSE Ref Guide (Customization) :

javax.net.ssl.keyStore system property

Note that the value NONE may be specified. This setting is appropriate if the keystore is not file-based (for example, it resides in a hardware token).

如果您的服务器证书不受默认 Java 信任库的信任,您可能还需要以类似的方式配置您的信任库。

关于java - 如何将 Windows keystore (MCS) 与 JDBC 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com