使用Java但不在C#中的证书的SSL

时间:2012-11-16 11:59:35

标签: c# java ssl certificate

我必须使用客户端身份验证调用需要SSL的服务。 我有一个p12客户端证书(私人和公共)和一个公共远程服务器证书。

Java客户端: 远程证书是jks,服务正常。

C#: 我尝试使用相同的p12进行身份验证并将pem(从带有keytool的jks导出)加载到LocalComputer Personal文件夹中,但我有一个例外:

 The remote certificate is invalid according to the validation procedure.

我检查了服务器证书的细节,发现链不能完成;我想是因为证书颁发者的范围不包含签名权。

如果这是正确的,为什么java正在工作?
如果这不正确,为什么C#不工作?
如何强制C#将证书从服务器视为有效?
在Windows中,我必须始终通过“证书”管理单元和LocalComputer等,或者我可以将信任嵌入客户端应用程序中吗?

更新:

我更改了标题并删除了 web-services 标记,因为它不是特定于Web服务的问题,而是SSL;所以:
标题是:WS调用客户端证书在Java中工作但不在C#中 标题现在是:证书使用Java而不是C#

的SSL

现在我的C#系统通过调用java应用程序,但我不太喜欢它。
我在不同环境中使用相同系统上的相同证书集测试了应用程序,并声明违反信任链不允许我的c#客户端通过SSL连接,但java忽略它。

所以我的最后一个问题是:在设置SSL连接时,java是否会忽略整个信任链的完整性?

1 个答案:

答案 0 :(得分:-1)

通常会发生以下任何一种情况:

  • 证书是自签名的,不会作为可信证书添加。
  • 证书已过期。
  • 证书由您的计算机上未安装的根证书签名。
  • 探测撤销列表,但无法找到/使​​用。

尝试获取有关服务器证书的一些信息,并查看是否需要在客户端上安装任何特定证书才能使其正常运行。