Java 打开输入流时发生SSL错误
我想我是想了解SSL是如何工作的,我有基于grails的应用程序作为应用程序流程的一部分,我们必须打开与第三方应用程序的“https”连接。 但遇到以下异常Java 打开输入流时发生SSL错误,java,ssl,Java,Ssl,我想我是想了解SSL是如何工作的,我有基于grails的应用程序作为应用程序流程的一部分,我们必须打开与第三方应用程序的“https”连接。 但遇到以下异常 "sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path
"sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
虽然到URL的连接工作正常,但当我试图打开输入流以读取数据时会发生错误。问题是,若有证书问题,我在打开连接时不应该有问题吗?
代码片段已附加
try{
URL url= new URL("https://.../..")
def c = url.openConnection()
println("connection successful with Merchant")
def result = c.inputStream.text?.trim() // results in error
println(result)
}
catch (Exception exp){
println("error !!!")
println(exp.getMessage())
}
对于刚开始使用SSL和证书管理的人来说,这是一个非常常见的问题。我在博客上的一篇题为“导入非知名证书”的文章中用非常详细的示例和命令回答了这个问题。这仅仅意味着您连接的web服务器或URL没有来自授权CA的有效证书 您可以使用另一个ssl站点验证这一点 或者按照以下步骤操作:
要解决此问题,请导入服务器证书。当我的示例在Linux环境中运行时,如果您在Windows上,则keytool的相同命令行参数也会起作用。感谢您的详细解释。我遇到的问题是,我试图在AmazonEC2中部署一个应用程序,但目前没有简单的方法来更新信任存储。试图找出我的选项我遇到的一件奇怪的事情是其他供应商提供的类似/相同证书可以正常工作,而我只遇到了供应商的问题。这两个供应商都是由verisign认证的。如果你看这两个供应商的证书,它看起来完全一样