簡體   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