在 IntelliJ IDEA 上无法找到请求目标的有效证书路径错误

问题描述 投票:0回答:1

虽然我可以使用 MongoDB Compass 连接到远程服务器上的 MongoDB 数据库,但当我尝试在 IntelliJ IDEA 中使用相同的 URI 进行连接时,出现以下错误:

... sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

我查看并尝试了以下线程的解决方法,但没有一个起作用:

在使用以下命令之前我已经导入了必要的证书文件:

sudo /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin/keytool -importcert -file /<certificate_file_name>.pem 
-keystore /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/lib/security/cacerts -alias "<certificate_alias>" -storepass changeit -noprompt

我还按照这个问题的建议,通过 IntelliJ IDEA 上的“工具”>“服务器证书”添加了此证书,并尝试通过传递一些指向该证书的 VM 选项来运行该应用程序,但仍然遇到相同的错误。该问题似乎与 IntelliJ 有关,因为我可以通过 Compass 使用相同的 URI 进行连接。还有什么需要我检查的吗?

java spring-boot intellij-idea ssl-certificate certificate
1个回答
0
投票

假设“远程服务器上的 MongoDB 数据库”具有签名证书。

可能有 3 个或更多证书比您需要导入到密钥库中的证书多。

3个或更多证书共同构成证书认证链。

在此处阅读有关证书链的更多信息

报告的错误信息:

Fatal (CERTIFICATE_UNKNOWN): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

表示证书链已损坏。而且还缺一张证书。

在此页面中有一些提示/说明,使用openssl

或浏览器来识别丢失的证书。

您还可以使用 openssl 检查在线证书链。为了 例如,您可以使用以下命令来检查某项的详细信息 来自网站的证书:

echo | openssl s_client -servername hostname -connect host:port 2>/dev/null | openssl x509 -noout -text
将主机名替换为服务器名称,并将主机:端口替换为
您要检查的服务器的主机和端口号。

您可以使用网络浏览器检查网站的证书链 开发人员工具或只需转到网络浏览器地址栏垫 锁定图标。以下是使用 Web Developer 在 Chrome 中执行此操作的方法 工具:

Visit the website. Open the Developer Tools (press F12). Click on the "Security" tab. Click on "View certificate".
这将向您显示网站的证书链。

您还可以使用

openssl

 命令从“远程服务器上的 MongoDB 数据库”接收所有必需的证书链列表:

openssl s_client -servername <hostname> -connect <host>:<port> 2>/dev/null
一旦拥有证书链:

    使用文本编辑器将相关证书提取到
  1. pem
    文件中。
  2. 使用
  3. keytool
     命令行工具将 
    pem
     文件插入密钥库。
我认为

这里这里有很好的答案描述了提取过程。

© www.soinside.com 2019 - 2024. All rights reserved.