java.lang.RuntimeException:javax.net.ssl.SSLHandshakeException

时间:2017-03-16 15:41:31

标签: java security azure ssl

Azure java SDK 给出 - &gt; 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的证书,但这也没有用。 看起来像azure建立连接,这就是ResourceGroups不为空的原因。但是不知道为什么它会在以后发出错误。

1 个答案:

答案 0 :(得分:0)

根据我的经验,请确保为该特定版本的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. 尝试再次运行代码以检查问题是否仍然存在。