RemoteCertificateNotAvailable - 身份验证期间未通过根证书

时间:2013-01-25 14:13:42

标签: c# java certificate tomcat7 trust

我目前遇到一个安装为Windows服务的.Net应用程序的问题,与在Java Server上运行的另一个用Java编写的应用程序进行通信,在Windows Server 2008上运行。

.NET应用程序作为Windows服务运行,并使用带有来自本地计算机个人存储的服务器证书的TcpListener进行保护(根证书和中间证书存在于本地计算机的相应证书库中),它提供了到Java应用程序,然后应该提供客户端证书来保护连接。

此过程中使用的所有证书都是从我们公司的CA创建的,Java应用程序将证书添加到它引用的密钥库和信任库中。

当Java应用程序尝试打开与.NET服务的连接时,连接失败。

我们在.Net应用程序中进行了跟踪,并且它报告说它是由于“远程服务器没有提供证书”。然后,我们为Apache Tomcat服务启用了SSL调试,它似乎进入了服务器(在本例中为.Net Windows服务)通过传递机器中的所有根证书从客户端请求证书的阶段。信任存储,但是我添加的根证书不会出现在根证书列表中。

我可以在本地机器信任存储中看到证书,所以我不确定下一步该做什么。什么会阻止我们自己的根证书出现在Java应用程序的证书颁发机构列表中?

1 个答案:

答案 0 :(得分:1)

我的一所大学在Windows事件日志中发现一条条目,说明由于必须提供许多根证书,受信任的根证书列表已被截断。一旦我们删除了所有不需要的工作。

更新: 来自Windows事件日志的消息如下所示:

  

当要求客户端身份验证时,此服务器会向客户端发送可信证书颁发机构列表。客户端使用此列表选择服务器信任的客户端证书。目前,该服务器信任这么多证书颁发机构,因此该列表已经变得太长了。因此该列表被截断。此计算机的管理员应检查受信任的证书颁发机构以进行客户端身份验证,并删除那些不需要信任的证书颁发机构。

另请参阅:http://support.microsoft.com/kb/2801679