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

如何将SSL证书加载到Java进程的内存中(或从中删除)

柴正祥
2023-03-14

首先,我必须说我不是一个Java开发人员,而是一个系统管理员。

我想,当Java进程启动时,没有javax。网ssl。信任库javax。网ssl。keyStore属性,其$JAVA_HOME/jre/lib/security/cacerts中的证书始终被加载和使用。

但是我发现一个JBoss战会加载另一个密钥库,并忽略默认缓存中的证书。

问题是PKIX典型的错误消息

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

但是我确信需要的证书在默认的cacerts中。

我不得不把属性javax放进去。网debug=all来阐明这个问题,并发现加载了另一个密钥库——一个密钥库有一个旧的过期证书,我不知道。

在第二个密钥库上添加有效证书后,PKIX错误消息消失。

那么,在Java进程中如何处理SSL证书呢?

加载新密钥存储库时,以前加载的证书会从内存中删除吗?

顺致敬意,

共有1个答案

赏新知
2023-03-14

否,加载新密钥库时,默认情况下不会替换/丢弃以前加载的证书。

Java在内部处理密钥库,就像在Word中打开文档一样:可以打开/加载密钥库、检索证书、删除证书、添加新证书,当然还可以在修改密钥库后保存整个密钥库。

执行HTTPS调用时,您可以指定一个TrustManager,该TrustManager保存对已加载密钥库的引用。因为它只是简单地用自定义密钥存储库替换默认密钥存储库,那么Java将只考虑自定义密钥存储库。

您还可以使用keystore、默认Java和自定义,如本答案所示(使用两个链接的TrustManager实例)。

或者,开发人员可以修改内存中加载的密钥库,并从Java默认存储添加证书。

如您所见,Java程序如何处理这种情况取决于开发人员。

 类似资料:
  • 我正在创建一个Java程序来从服务器获取信息,但我必须从Java程序与服务器执行ssl握手。 我有文件证书用于身份验证,但我不知道如何用java加载该证书,以便java程序可以与我想要从中获取信息的服务器进行“握手”。从哪里开始?

  • 假设我编写了两个Java应用程序:和,它们在两个独立的服务器上部署和运行(部署到和部署到

  • 你可以添加 SSH 或 SSL 证书来连接你的实例。若要配置 SSH 或 SSL 证书,请前往“配置”->“SSH 或 SSL 证书”。 添加 SSH 证书 若要创建一个新证书,请点击“+ 新建证书”并选择“SSH 证书”。 名 SSH 证书的名。 私钥 粘贴私钥文件的内容。 添加 SSL 证书 若要创建一个新证书,请点击“+ 新建证书”并选择“SSL 证书”。 名 SSL 证书的名。 CA 证书

  • 问题内容: 我需要将一个MySQL数据库中的1亿多行记录加载到内存中。我的Java程序失败, 因为我的机器中有8GB RAM,并且我的JVM选项中给出了-Xmx6144m。 这是我的代码 任何想法如何克服这个问题? 更新 我碰到了这篇文章 ,以及根据下面的评论更新了我的代码。看来我能够以相同的- Xmx6144m量将数据加载到内存中,但是需要很长时间。 这是我的代码。 要加载前100,000行,需

  • 在服务器重置缓存数据保存在磁盘存储后。但在服务器启动后不使用缓存数据。所以我想加载磁盘存储内容到memory.How做到这一点?在这个堆栈问题加载EhCache磁盘存储内容到内存中使用BootstrapCacheLoaderFactory但不为我出现。

  • 它是使用.NET 4.7.2生成的,类似于本问题中的答案:使用纯.NET Framework生成和签名证书请求 然后将序列化的CSR发送到服务器,服务器需要创建证书--问题是如何做到这一点。