首页 >Java >java教程 >在代理后面使用 Maven 时如何解决'SunCertPathBuilderException”错误?

在代理后面使用 Maven 时如何解决'SunCertPathBuilderException”错误?

Susan Sarandon
Susan Sarandon原创
2024-11-14 17:45:01190浏览

How to Resolve

SSL 证书和 Maven 代理问题

在代理后面使用 Maven 时,您可能会遇到 SSL 证书问题。您描述的错误“SunCertPathBuilderException:无法找到请求目标的有效证书路径”通常表示 Maven 无法验证基于 HTTPS 的 Maven 存储库 https://repo.maven.apache.org/maven2 的真实性。

尽管通过 settings.xml 文件正确配置了代理设置,但代理问题可能仍然会阻止 Maven 安全地连接到中央 Maven 存储库。

以下是分步说明可能解决此问题的解决方案:

  1. 获取 SSL 证书:

    • 访问基于 HTTPS 的 Maven 存储库 (https:// /repo.maven.apache.org/maven2) 在网络浏览器中。
    • 在浏览器地址栏中找到锁图标并单击它。
    • 选择“查看证书”。
    • 导航到“详细信息”选项卡,然后选择“保存到文件”。
    • 将 Base 64 X.509 (.CER) 格式的证书保存到指定位置。
  2. 导入 SSL 证书:

    • 打开命令提示符或终端并执行以下命令,替换 ' ;'替换为您保存证书的位置:
    keytool -import -file <path-to-cert> -keystore <path-to-keystore>
    • 替换 ''与所需的密钥库位置(例如 C:tempmavenKeystore)。
  3. 配置 Maven 使用密钥库:

    • 使用 -Djavax.net.ssl.trustStore 参数运行以下 Maven 命令来指定密钥库的位置:
    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -Djavax.net.ssl.trustStore=<path-to-keystore>
    • 替换
  4. 替换

    • 替换
    包含密钥库的完整路径(例如,对于 Windows,C:tempmavenKeystore)。对于 Linux/macOS,请使用绝对路径(例如 /tmp/mavenKeystore)。
    export MAVEN_OPTS=-Djavax.net.ssl.trustStore=<path-to-keystore>
  5. 可选:永久解决方案 (MAVEN_OPTS)

您可以避免每次指定密钥库位置,可以设置 MAVEN_OPTS 环境变量:对于 Windows,将导出替换为 set。 按照以下步骤,您可以导入 SSL 证书并配置 Maven 使用密钥库,从而允许您与 Maven 存储库建立安全连接并避免与 SSL 证书相关的错误.

以上是在代理后面使用 Maven 时如何解决'SunCertPathBuilderException”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn