我获得了软件供应商的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上已经变得未知,即使它在我的信任库中。
可能是什么问题?
提前致谢。
答案 0 :(得分:0)
(在评论中解决)
为什么它在不同的机器上显示不同?
.cer
将包含叶证书。当操作系统显示证书时,它会在系统信任库中查找证书链和根CA
在您的笔记本电脑中,您可能已将发行者安装在系统信任库的“受信任的根证书颁发机构”中。然后,当操作系统显示证书时,它会在系统信任中找到颁发者并显示它。
在您的服务器中似乎未安装颁发者的认证链,然后证书可视化工具找不到它。
似乎证书在服务器XYZ上已经变得未知,即使它在我的信任库中。 可能是什么问题?
将根CA证书包含在JKS信任库中应该足以连接到SSL服务器。尝试将“XXXXXX”导入JKS。