我正在尝试通过SSL发送电子邮件,我已经拥有证书,并已将其导入我的cacerts文件中。我假设默认情况下,java会在java_home或为项目指定的jdk中查找cacerts文件。事实并非如此,因此我将keystore和truststore的系统属性设置为指向找到cacerts的路径,我通过以下方式执行此操作:
System.setProperty("javax.net.ssl.keyStore", JAVA_HOME + "\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStore",JAVA_HOME + "\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.keyStorePassword", password);
System.setProperty("javax.net.ssl.trustStorePassword", password);
即使在指定路径后,我也无法正常工作:
引起:sun.security.validator.ValidatorException:PKIX路径 建筑失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径
我已经在这里阅读了很多帖子(Stackoverflow)甚至其他网站,我无法设法让它发挥作用。有谁知道为什么会这样?或者也许你可以告诉我以前是否应该检查一些事情。