【问题标题】:Adding other certificates to existing jks or not using javax.net.ssl.trustStore for a request将其他证书添加到现有 jks 或不使用 javax.net.ssl.trustStore 请求
【发布时间】:2018-04-11 10:48:28
【问题描述】:

我在 linux 的 Tomcat 下运行一个 spring 应用程序。我使用 mongodb 作为我的数据库服务。

在搜索了很多以找到如何使用 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。但问题是我使用 Spring RestTemplate 从我的应用程序发送其他 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 answer 生成了我的 SSL 证书。我使用了 here 描述的 keytools。

我不是使用 keyTools 或 Key manager 的专家,而且我以前没有使用 ssl 的经验。

更新 即使删除了 Clearing 属性,甚至关闭了系统,我仍然会遇到同样的异常。好像连接仍在尝试使用错误的 ssl 证书。

【问题讨论】:

    标签: java spring encryption openssl keytool


    【解决方案1】:

    您所做的是创建一个自定义信任库来替换 JVM 提供的信任库,而您的信任库不包含公共 Internet 服务使用的所有知名 CA 证书。因此,当您尝试从 Internet 验证证书时,您会遇到信任路径错误。

    最快的解决方法是设置javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword 属性。相反,将您的 mongodb CA 证书导入 JVM 默认信任库(通常是 cacerts 文件)。如果您更换/升级 JVM,您需要记住重复此操作。

    如果您没有修改 cacerts 的必要权限,或者您在一个禁止修改的共享服务器上,那么您仍然可以使用您的自定义信任库,但可以通过所有良好的方式对其进行扩充 - cacerts 文件中的已知证书。当新的 CA 证书出现时,您将负责维护它。

    【讨论】:

    • 这听起来很有效。我会测试它。但是我的其他证书怎么了?为什么我的应用程序不能再通过 HTTPS 连接到其他服务器?我的意思是旧证书必须在那里。
    • 不要介意我之前评论中的问题。我发现我弄乱了 linux 主机名。
    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多