Azure java SDK 给出 - > java.lang.RuntimeException: 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
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不为空 . 但不知道为什么它会在以后发出错误 .
1 回答
根据我的经验,请确保为该特定版本的Java添加了Unlimited Cryptography的Java安全策略文件 . 如果没有,请按照以下步骤安装Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files,这些文件是使用PGP加密所必需的,某些连接器可能需要这些文件 .
下载Java 7或Java 8的文件和说明 .
找到Atom正在使用的Java实例的
<JAVA_HOME>\jre\lib\security
目录 . 例如,此位置可能是:C:\Program Files\Java\jre8\lib\security
.从此目录中删除以下.jar文件:local_policy.jar和US_export_policy.jar .
将这两个文件替换为JCE Unlimited Strength Jurisdiction Policy Files下载中包含的.jar文件 .
尝试再次运行代码以检查问题是否仍然存在 .