当前位置: 首页 > 知识库问答 >
问题:

HttpsUrlConnection使用密钥库而不是带有WebSphere Liberty概要文件的信任库

冯宏放
2023-03-14

我们在WebSphere Liberty Profile中的WebSphere TAI中使用HttpsUrlConnection连接到安全服务器。我对SSL证书错误有很多问题,直到我发现它在WLP密钥库中寻找签名者证书,而不是WLP信任库或JVM信任库。代码中没有任何东西设置这个,它必须是默认的。但我很困惑,因为当我们在其他代码中使用HTTP客户端时,它使用了JVM的信任库。

如何使HttpsUrlConnection使用WLP或JVM信任库,而不是密钥库?

共有1个答案

索寒
2023-03-14

您可以如下所示加载您的信任存储并将其设置为SSLContext,该SSLContext可以设置为HttpsUrlConnection。由于这是我使用默认值的示例,您应该将它们替换为适当的算法、协议和信任存储类型。

        try (FileInputStream truststoreFile = new FileInputStream("path/to/your/truststore.jks")) {
            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            KeyStore truststore = KeyStore.getInstance(KeyStore.getDefaultType());
            char[] trustorePassword = "<truststorePassword".toCharArray();
            truststore.load(truststoreFile, trustorePassword);
            trustManagerFactory.init(truststore);
            SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
            KeyManager[] keyManagers = {};//if you have key managers;

            sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(), new SecureRandom());

            URL httpsUrl = new URL("<your https url>");
            URLConnection urlConnection = httpsUrl.openConnection();

        } catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e) {
            //handle exception
        } catch (KeyManagementException e) {
           //handle exception
        }
 类似资料:
  • 问题内容: 据我了解,密钥库通常会保存私钥/公钥,而信任库通常只保存公钥(并且代表您打算与之通信的受信任方的列表)。好吧,这是我的第一个假设,因此,如果这不正确,那么我可能起步并不顺利… 我很想了解使用keytool时如何/何时区分商店。 因此,到目前为止,我已经使用 这将创建我的keystore.ks文件。我回答了我是否信任bob的问题,但是我不清楚这是否创建了密钥库文件或信任库文件?我可以将我

  • 应用程序A调用webservice应用程序B 相互认证。 我们有申请证书。由名为C的CA签名的证书。这是jks文件中唯一的单一证书内容 我们使用了相同的jks文件作为应用程序密钥库和信任库。它运转良好。 我的理解是,当应用程序A调用appB时,appB发送其证书,该证书也由名为C的CA签名。appA接受该证书,因为在appA TrsStore中,我们有另一个证书,该证书由名为C的CA签名。 然后,

  • 问题内容: 我需要签署Android应用程序()。 我有档案 我把它转化为通过Internet Explorer文件,然后转换到使用密钥工具。然后,我尝试用jarsigner 签名,但是它说.keystore不包含私钥。 我做错了什么? 问题答案: 使用JDK 1.6或更高版本 贾斯汀(Justin)在下面的评论中指出,仅keytool能够使用以下命令来执行此操作(尽管仅在JDK 1.6和更高版本

  • 我不记得我的Android应用程序使用了哪个密钥库文件。有什么方法可以找到吗? 或者我可以搜索硬盘上的所有密钥库文件吗?问题是文件没有扩展名。

  • 问题内容: 我需要设置一个在Jersey- Client应用程序中使用。我要做的就是接受自定义根ca证书的上下文。真的没有办法生成密钥库文件和导入CA证书吗? 问题答案: 真的没有办法生成密钥库文件和导入CA证书吗? 有一些方法可以在没有密钥库文件的情况下执行此操作,但是由于必须加载要信任的CA证书,因此必须以某种方式加载文件或资源。 (您当然也可以实现自己的实现,使所有调用都使用Certific

  • ----开始RSA私钥----- 私钥在这里 ----结束RSA私钥----- 如何使用privateKeyPEM字节对象?我想将它与jsch.addIdEntity()一起使用 但我真的不明白如何使用这个byte[]privateKeyPEM变量来设置标识? 这里是我的JSch部分的一个示例: