【问题标题】:java.lang.RuntimeException: javax.net.ssl.SSLHandshakeExceptionjava.lang.RuntimeException: javax.net.ssl.SSLHandshakeException
【发布时间】:2017-03-16 15:41:31
【问题描述】:

Azure java SDK 提供 -> java.lang.RuntimeException:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

    ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(options.getClientId(), options.getTenantId(),   options.getClientSecret(), AzureEnvironment.AZURE);

    subscriptionIds.forEach((subscriptionId)->{
        Azure azure = Azure.authenticate(credentials).withSubscription(subscriptionId);
        ResourceGroups resourceGroups = azure.resourceGroups();
        for(ResourceGroup resourceGroup : resourceGroups.list()){
            for(VirtualMachine virtualMachine : azure.virtualMachines().listByGroup(resourceGroup.name())){
                logger.info(virtualMachine.name());
            }
        }
    });

执行 for(ResourceGroup resourceGroup : resourceGroups.list()) 时出现此错误。 在网上查看,我在密钥库中添加了 management.azure.com 的证书,但这也没有用。 看起来天蓝色建立了连接,这就是 ResourceGroups 不为空的原因。但是不知道为什么后面会报错。

【问题讨论】:

    标签: java security azure ssl


    【解决方案1】:

    根据我的经验,请确保为该特定版本的 Java 添加了 Unlimited Cryptography 的 Java 安全策略文件。如果没有,请按照以下步骤安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,这是使用 PGP 加密所必需的,并且可能是某些连接器所必需的。

    1. 下载Java 7Java 8 的文件和说明。

    2. 找到 Atom 正在使用的 Java 实例的 <JAVA_HOME>\jre\lib\security 目录。例如,此位置可能是:C:\Program Files\Java\jre8\lib\security

    3. 从此目录中删除以下 .jar 文件:local_policy.jar 和 US_export_policy.jar。

    4. 将这两个文件替换为 JCE Unlimited Strength Jurisdiction Policy Files 下载中包含的 .jar 文件。

    5. 尝试再次运行代码以检查问题是否仍然存在。

    【讨论】:

    • 问题依然存在,而且是随机的。它有时会出现,有时不会出现
    猜你喜欢
    • 2013-10-03
    • 2016-07-28
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2018-12-16
    相关资源
    最近更新 更多