【问题标题】:Maven not using system keystore when custom trusstore provided提供自定义信任库时,Maven 不使用系统密钥库
【发布时间】:2019-12-04 14:52:20
【问题描述】:

我们正在使用一个使用自签名 SSL 证书的私有 maven 存储库。我们遵循了Maven official documentation 的指导方针,它告诉您将 CA 证书放在自定义信任存储中,然后告诉 maven 使用它,例如使用环境变量 MAVEN_OPTSMAVEN_OPTS="-Xmx512m -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=XXX

这确实修复了访问我们私有仓库的 SSL 错误,但是现在 maven 找不到访问 Maven Central 的证书!似乎提供自定义信任存储会自动禁用将系统证书用于公共存储库。

Another very popular SO question 提供了一种解决方法,但对我来说禁用 SSL 不是解决方案。

我希望提供自定义证书只会添加到系统中的证书。

我们已经将所有系统受信任的证书添加到自定义信任库中,但认为这是一个乏味的解决方案。

【问题讨论】:

    标签: java maven ssl


    【解决方案1】:

    很遗憾,您无法将多个信任库(自定义 + 系统)传递给 javax.net.ssl.trustStore。当信任库被传递给该属性时,它基本上会忽略系统之一,因此为您提供了 2 个选项:

    1. 将所有系统信任的证书添加到您的自定义信任库中(繁琐但只是一次性的,或者非常少见的操作)
    2. 获取由公共 CA 签名的证书。例如,您可以从https://letsencrypt.org/ 获得免费证书(它是受信任的公共 CA,我是否提到它是免费的?)。 let's encrypt 唯一的缺点是证书的有效性,目前他们只颁发 3 个月的证书。

    【讨论】:

    • 我们也尝试将自定义 CA 证书添加到系统信任证书中,但 maven 似乎根本不使用系统证书。是否使用系统信任库?
    • 我真的不知道 Maven 在引擎盖下使用了什么,但你为什么不反过来做呢?将系统信任证书添加到您的自定义信任库中......这样,您可以保持系统信任库完整,并且不会影响其他工具。
    • 我们会这样做的 :) 感谢您的建议!
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2018-11-24
    • 2018-11-11
    • 2015-02-07
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多