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

向现有JK添加其他证书或不使用javax.net.ssl.TrustStore进行请求

田彬郁
2023-03-14

在大量搜索如何使用SSL/TLS连接到mongodb之后,我发现必须将证书添加到java keystore,并在spring应用程序中使用它们,如下所示。

System.setProperty("javax.net.ssl.trustStore","/path/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "apass");
System.setProperty("javax.net.ssl.keyStore", "/path/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "apass");
System.setProperty("javax.security.auth.useSubjectCredsOnly","false");

一切都很好,我可以连接到MongoDB。但问题是我使用SpringRestTemplate应用程序发送其他HTTP请求。在我用SSL配置mongodb之后,我无法连接到任何其他外部主机。

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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

我使用这个SO答案生成了我的SSL证书。我使用了这里描述的keytools。

更新后即使删除清除属性,甚至关闭系统,我仍然得到相同的异常。就像连接仍然试图使用错误的ssl证书一样。

共有1个答案

段干俊茂
2023-03-14

您所做的是创建一个自定义信任存储,该信任存储取代JVM提供的信任存储,并且您的信任存储不包含公共internet服务使用的所有众所周知的CA证书。因此,当您的终端试图通过Internet验证证书时,您将得到信任路径错误。

最快的解决方法是不设置javax.net.ssl.truststorejavax.net.ssl.truststorePassword属性。相反,将mongodb CA证书导入到JVM默认信任存储(通常是cacerts文件)中。如果替换/升级JVM,则需要记住重复此操作。

如果您没有修改cacerts所需的权限,或者您位于禁止修改cacerts的共享服务器上,那么您仍然可以使用自定义信任存储,但可以使用cacerts文件中所有已知的证书来增强它。当新的CA证书出现时,您将负责维护它。

 类似资料:
  • 我在java和cxf中有应用程序,它通过客户端证书连接到Web服务。 我有WebService所有者的证书 证书。p12 证书。pem 证书。crt 受信任的核证机关 根癌 我无法直接将此p12证书转换为java要求的工作jks密钥库。 我是这样做的: 但是这个jks不工作,我得到HTTP响应403:禁止使用这个certificate1.jks 但是,如果我将此p12(pfx)证书导入Intern

  • 我用Go语言询问过,但没有回应 https://groups.google.com/forum/#!主题/golang nuts/EhlpMiMAPSM 我认为复制邮件正文没有多大意义,因为我不相信谷歌群组或链接会改变,第一封邮件的正文应该就足够了。 我有一个使用x509包生成的证书,一个由另一个同样使用x509包生成的CA证书签名的CA证书。一应俱全。 用x509打开文件创建der。Create

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

  • 我正在使用OpenSSL生成证书签名请求(CSR)。 但是,我希望将自己的字段添加到证书中,例如: GroupID:348348923 EmployeeLevel:Class 3 在我请求证书颁发机构(CA)签署CSR之前,正确的方法是什么?

  • 我正在开发一个原型应用程序,我想添加一些虚拟产品卡或通行证到苹果钱包和谷歌支付。 我为apple Wallet找到了以下内容:https://github.com/tomavic/cordova-apple-wallet#readme 谷歌支付也有类似的东西吗?这可能吗?

  • 问题内容: 我已经使用python创建了一个txt文件,其中包含几行文本,这些文本将由一个简单的程序读取。但是,我在重新打开文件以及在程序的后续部分中在文件中写入其他行时遇到了一些麻烦。(这些行将从稍后获得的用户输入中写入。) 这是假设“ file.txt”已被打开并被写入。但是,使用我当前拥有的代码第二次打开该文件时,我必须擦除之前编写的所有内容并重写新行。有没有办法防止这种情况发生(并可能减少