2010-09-16 125 views
1

我正在實現一個使用Web服務的VB.NET桌面應用程序。在使用Web服務的客戶端應用程序中使用證書

在Java中實現的Web服務和我當前在本地主機上使用Tomcat託管Web服務。

Web服務需要與客戶端進行安全通信,所以我遵循瞭如何使用Java的keytool.exe創建兩個.jks密鑰庫(一個用於客戶端,另一個用於服務器)的指令,然後創建兩個。

我把密鑰存儲和證書CER證書(一個客戶端和一個服務器)生成到其中Web服務期待它們的目錄(按說明書)

我已經安裝了證書進入TrustedPeople並試圖通過設置ClientCredentials.ClientCertificates屬性來使用證書:

myServiceProxy.ClientCredentials.ClientCertificate.SetCertificate(storeLocation.CurrentUser, StoreName.TrustedPeople, X509FindType.FindByIssuerName, "name") 

我不斷收到以下錯誤消息當我嘗試調用任何方法:

發現錯誤處理< WSSE:安全>頭

我的問題是,我不不知道如何在使用Web服務的VB.NET客戶端應用程序中使用它。我可能會完全錯誤。任何關於這個主題的指導將不勝感激。

謝謝

-Frinny

+0

只是重讀你的問題。你真的需要客戶端證書嗎?或者與服務器端證書的正常SSL通信是否足夠? (這是99%的'安全'網站所做的) – 2010-09-16 14:27:29

+0

另外,你用什麼來連接到你的服務器? – 2010-09-16 14:30:19

+0

感謝您的幫助!我沒有連接到一個網站;我正在使用Web服務。我正在使用一個代理類(在添加對項目的Web引用時創建的)來連接並使用Web服務。 – Frinavale 2010-09-16 14:32:28

回答

0

雖然我還沒有10年編碼VB,這應該讓你開始:http://www.example-code.com/vbdotnet/ssl_client_certificate.asp

尤其是這看起來是裝載包含的文件證書: certStore.LoadPfxFile( 「chilkat_secret.pfx」, 「祕密」)

這種提取證書,並使用它進行連接:

Dim cert As Chilkat.Cert 
cert = certStore.FindCertBySubjectCN("Chilkat Software, Inc.") 
If (cert Is Nothing) Then 
    MsgBox(certStore.LastErrorText) 
    Exit Sub 
End If 


socket.SetSslClientCert(cert) 
+0

謝謝您的回覆。我沒有Chilkat.Cert的內容......它看起來是一個自定義對象。另一件事是我沒有使用套接字。 – Frinavale 2010-09-16 14:21:44

0

當我不得不使用證書和WS時,我也遇到了很多問題。 Use the certificates MMC並驗證:

  • 您將證書放在正確的位置。請注意,有一個CurrentUser商店,機器商店等。請確保您根據您的代碼將證書放入正確的證書。
  • 哪位用戶正在運行您的應用程序?證書是否位於商店中?證書必須對用戶可見。
  • 打開證書並確保它是可信的(如果沒有,您將看到警告)。您可能需要將您的CA證書存放在Trusted Certification Authorities商店中。
  • 請確保您在每邊使用的算法都被另一邊支持。
  • 請注意,你正在尋找證書發行人名稱X509FindType.FindByIssuerName, "name"打開證書,確保發行人姓名匹配(我猜不是因爲它好像從副本&粘貼從示例)。

如果所有的失敗,請嘗試使用證書位置進行實驗(我依稀記得有能夠從一個位置使用證書,而不是其他一些問題),並與物業使用以搜索證書。

另外,因爲您詢問了有關證書的問題,所以我回答了有關證書的問題。檢查是否存在內部異常並查看 - 這可能是另一個問題。

+0

我怎樣才能告訴CA的只有私鑰和公鑰的.p12證書? – Reuben 2013-08-05 01:24:04

相關問題