以前直向服务器以http请求得到数据,现在想向https的服务器请求得到数据,并且在客户端安装他们的证书。我已经装好了证书,进行IE登陆https服务器,显示正常。但是使用程序出现了如下错误: 
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
后来我上网查了一下,发现好像需要将证书导入到%JAVA_HOME%\lib\security\cacerts这个文件中才行,可是从来没弄过,希望大家能帮我写出详细步骤,和发一下成功的例子。先谢谢各位了!

解决方案 »

  1.   

    其实很简单,方法如下:每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,    在该网页上右键 >> 属性 >> 点击"证书" >>     再点击上面的"详细信息"切换栏 >>    再点击右下角那个"复制到文件"的按钮    就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。    例如:保存为abc.cer,放在C盘下 第二步:如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?    方法如下    假设你的jdk安装在C:\jdk1.5这个目录,    开始 >> 运行 >> 输入cmd 进入dos命令行 >>     再用cd进入到C:\jdk1.5\jre\lib\security这个目录下    敲入如下命令回车执行    keytool -import -alias cacerts         -keystore C:\jdk1.5\jre\lib\security\cacerts         -file C:\abc.cer         -trustcacerts    此时命令行会提示你输入cacerts证书库的密码,    你敲入changeit就行了,这是java中cacerts证书库的默认密码,    你自已也可以修改的。 
      

  2.   

    通过上面的操作可以把Https网站中的安全证书导入到java中的cacerts证书库中。
      

  3.   

    如果是有密码的证书又要如何导出成*.cer
      

  4.   

    我以前没有做过SSL方面的以上的也是找出来的请你先试验下。
      

  5.   


    因为证书的密钥导出不了*.cer中,在导入cacerts  中 密钥为空,Https服务器通过不了
      

  6.   

    如何将带私钥的证书导出到*.cer中,代码不用在贴(代码是要RMB的)
      

  7.   

    导出带私钥的证书
    1.
     打开“证书 - 当前用户”。
     
    2.
     执行下列操作之一:• 如果处于“逻辑证书存储”查看模式,请在控制台树中,单击“证书”。位置
     
    • 证书 - 当前用户/逻辑存储区/证书
     
    • 如果处于“证书目的”查看模式,请在控制台树中,单击“目的”。位置
     
    • 证书 - 当前用户/目的
     
     
    3.
     在详细信息窗格中,单击要导出的证书。
     
    4.
     在“操作”菜单上,指向“所有任务”,然后单击“导出”。
     
    5.
     在“证书导出向导”中,单击“是,导出私钥”。(只有将私钥标记为可导出且可以访问它时才会显示该选项。)
     
    6.
     在“导出文件格式”下,执行以下一种或全部操作,然后单击“下一步”。• 要将所有证书包括在证书路径内,请选中“如果可能,包含证书路径中的所有证书”复选框。
     
    • 要启用严密保护,请选中“启用严密保护(要求 IE 5.0 或 NT 4.0 SP4 或更高版本)”复选框。
     
    • 要在导出成功之后删除私钥,请选中“如果导出成功,删除私钥”复选框。
     
     
    7.
     在“密码”中,键入相关的密码,以便对要导出的私钥进行加密。在“确认密码”中,再次键入相同的密码,然后单击“下一步”。
     
    8.
     在“文件名”中,键入存储已导出的证书和私钥的 PKCS #12 文件的文件名和路径,单击“下一步”,然后单击“完成”。
     注意• 步骤 1 中的链接将为当前用户打开证书。要为服务帐户或计算机帐户打开“证书”,请按照以下说明进行操作。
     
    • 要打开“证书”,请依次单击“开始”、“运行”,再键入“mmc”,然后单击“确定”。单击“文件”菜单上的“打开”,再单击要打开的控制台,然后单击“打开”。在控制台树中,单击“证书”。
     
    • 如果尚未创建包含“证书”的 MMC 控制台,请参阅“相关主题”。
     
    • 如果证书是由 Windows Server 2003 证书颁发机构颁发的,则该证书的私钥仅是可导出的,前提是其证书申请必须通过已选中“密钥标记为可导出的”复选框的“高级证书申请颁发机构网页”提交,或者该证书用于加密文件系统 (EFS) 或 EFS 恢复。
     
    • 导出证书及其相关私钥时,默认情况下,在“证书导出向导”中将启用加强保护(也称为“迭代次数”)。严密保护和旧版本的程序不兼容,因此如果要在任何比 Microsoft Internet Explorer 5 更早的浏览器中使用私钥,则需要清除“启用严密保护”选项。
     
    • 在“证书导出向导”结束时,除了新建的文件外,证书还将保留在证书存储区中。如果要从证书存储区中删除证书,则需要将其删除。