gpt4 book ai didi

java - 告诉 java 客户端代码接受自签名证书

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:51 34 4
gpt4 key购买 nike

我想连接到具有自签名证书https服务器,而不修改我的客户端代码。

我知道这个问题已经被问过很多次了,但我无法让它发挥作用。这是我所做的:

  1. 在 Firefox 中打开 https 服务器

  2. 点击网址信息,然后点击更多信息,然后查看证书,然后点击详细信息,然后点击导出。

  3. 选择默认导出类型设置(X.509 证书 (PEM),另存为 certificate.crt),并将其保存到磁盘。

  4. 打开命令提示符,转到客户端代码使用的 java_home 文件夹,在我的例子中为 c:\jdk-7u55-windows-x64\jre\bin

  5. 输入以下命令:

    keytool -import -v -trustcacerts
    -alias server-alias -file C:\Downloads\certificate.crt
    -keystore cacerts.jks -keypass changeit
    -storepass changeit

我也尝试过:

   keytool -import -v -trustcacerts
-alias server-alias2 -file C:\Downloads\certificate.crt
-keystore keystore.jks
  • 重新启动客户端应用程序
  • 完成所有这些之后,我仍然收到 SSLHandshakeException (无法找到请求目标的有效证书路径)。日志中的完整异常:

    sun.security.validator.ValidatorException: 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

    我不知道我做错了什么,还能做什么或如何进一步调试。

    最佳答案

    指定所需的绝对路径cacerts.jks应该有帮助。当前使用keytool只是在当前目录中创建新的 .jks (我想)是 c:\jdk-7u55-windows-x64\jre\bin 。默认 cacerts 位置通常位于 JAVA_HOME/jre/lib/security/cacerts 。或者你可以使用 -Djavax.net.ssl.trustStore=<path to custom store> -Djavax.net.ssl.trustStorePassword=<custom store_passwd>作为应用程序的起始参数。 More info

    关于java - 告诉 java 客户端代码接受自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827720/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com