2011-10-21 39 views
1

我想我想了解SSL的工作原理,我有基于Grails的应用程序作为应用程序的一部分,我们必须打开“https”连接到第三方应用程序。 但运行到以下异常SSL错误,同时打开输入流

"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()) 
     } 
+0

def ..不是java标记的 – stacker

回答

0

这是人们使用SSL和证书管理开始了一个非常普遍的问题。我在我的博客AllInGeek.com上的一篇题为“导入非知名证书”的文章中以非常详细的示例和命令回答了此问题。

+0

虽然我的示例在Linux环境中运行,但如果您在Windows上,则keytool的相同命令行参数应起作用。 – allingeek

+0

感谢您的详细解释。我遇到的问题是我试图在Amazon EC2中部署应用程序,目前没有简单的方法来更新信任存储。试图找出我的选择我遇到的一个奇怪的事情是其他供应商的相似/相同的证书工作正常,而我只与供应商遇到问题。这两家供应商都通过verisign认证。如果你看看这两个证书,它看起来完全一样https://payment.atomtech.in/paynetz/epi/fts https://www.billdesk.com/pgidsk/pgijsp/花旗卡/ citibank_card.jsp – Amit