[英]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.