繁体   English   中英

SSL证书可以在Java中工作,但不能在C#中工作

[英]SSL with certificates working in Java but not in C#

我必须调用需要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#中不起作用
现在的标题是 :SSL证书在Java中工作,但在C#中不工作

现在,我已经通过调用Java应用程序来工作C#系统,但是我不太喜欢它。
我在各种环境下的同一系统上使用同一证书集测试了该应用程序,并声明违反信任链不允许我的c#客户端通过SSL连接,但是Java会忽略它。

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

通常会发生,因为以下任一情况都成立:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM