Cert在不同的机器上显示不同的认证链

时间:2017-01-19 08:22:49

标签: java ssl https ssl-certificate keystore

我获得了软件供应商的SSL证书(.cer扩展名)。当我在笔记本电脑中打开它时,我可以看到

  

此证书旨在用于以下目的:

     
      
  • 所有申请政策
  •   
     

问题至:uat.xxxxxx.sg

     

问题:XXXXXX。

在“认证路径”标签下,我可以链,顶部是“XXXXXX”,下面是“uat.xxxxxx.sg”。下面的证书状态显示:

  

证书状态:

     

找不到此证书的签发人。

我将此证书复制到服务器(让我们称之为服务器XYZ),并在服务器上打开它,它显示:

  

Windows没有足够的信息来验证此证书:

     

问题至:uat.xxxxxx.sg

     

问题:XXXXXX。

在“证书路径”选项卡下,它只显示一个“uat.xxxxxx.sg”,

  

证书状态:

     

找不到此证书的签发人。

为什么它在不同的机器上显示不同?

在我的笔记本电脑上,我将证书文件导入Java密钥库文件。这将是我的信托商店。然后我运行了一个我自己编写的小型Java程序,用单向SSL连接到软件供应商的服务器,并使用以下参数指定信任库。该程序运行正常,因为它能够与软件供应商的服务器成功连接。

-Djavax.net.ssl.trustStore=....
-Djavax.net.ssl.trustStorePassword....

但是,当我将程序和密钥库带到服务器XYZ并运行它时,它“无法找到到请求目标的有效证书路径”。似乎证书在服务器XYZ上已经变得未知,即使它在我的信任库中。

可能是什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

(在评论中解决)

  

为什么它在不同的机器上显示不同?

.cer将包含叶证书。当操作系统显示证书时,它会在系统信任库中查找证书链和根CA

在您的笔记本电脑中,您可能已将发行者安装在系统信任库的“受信任的根证书颁发机构”中。然后,当操作系统显示证书时,它会在系统信任中找到颁发者并显示它。

在您的服务器中似乎未安装颁发者的认证链,然后证书可视化工具找不到它。

  

似乎证书在服务器XYZ上已经变得未知,即使它在我的信任库中。   可能是什么问题?

将根CA证书包含在JKS信任库中应该足以连接到SSL服务器。尝试将“XXXXXX”导入JKS。