我正在用Java构建一个应用程序,我希望对https服务进行休息调用。该应用程序是用Java Standard Edition编写的。
我正在使用If This Then That作为测试,但我希望应用程序连接到用户键入的任何https站点。 对于IFTTT,我使用以下URL:
https://maker.ifttt.com/trigger/{my_event} /with/key/{my_app_key}
我收到以下错误:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我认为此错误意味着用于IFTTT的根证书不在我的cacerts信任库中。我理解这个问题的解决方案可能是添加它。根据chrome,证书路径终止于根证书名称“Go Daddy Root Certificate Authority-G2”。
我想如果我使用keytool将它添加到我的cacerts中它会起作用。但是我希望我的应用程序的用户输入各种URL。我不想只允许特定的互联网子集。我也不想禁用证书检查。 Chrome,IE和Firefox都可以毫无问题地识别IFTTT网站。 为什么Java中的标准cacerts文件不能识别这个? 我可以让Java使用包含所有这些网站的系统cacerts文件吗? (这必须适用于Windows上的Java,Max和各种Linux风格。)