在使用Web服务的客户端应用程序中使用证书

时间:2010-09-16 14:07:14

标签: java vb.net web-services certificate ws-security

我正在实现一个使用Web服务的VB.NET桌面应用程序。

用Java实现的Web服务,我目前在我的localhost上使用Tomcat来托管Web服务。

Web服务需要与客户端进行安全通信,因此我遵循了如何使用Java的keytool.exe创建两个.jks密钥库(一个用于客户端,一个用于服务器)然后创建两个.cer的说明。证书(一个用于客户端,一个用于服务器)

我已将密钥库和证书生成放置到Web服务所期望的目录中(根据说明)

我已将证书安装到TrustedPeople中,并试图通过设置ClientCredentials.ClientCertificates属性来使用证书:

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

当我尝试调用任何方法时,我不断收到以下错误消息:

发现处理< wsse:Security>的错误头

我的问题是我不知道如何在使用Web服务的VB.NET客户端应用程序中使用它。我可能完全错了。非常感谢有关该主题的任何指导。

谢谢,

-Frinny

2 个答案:

答案 0 :(得分:0)

虽然我没有编写VB 10年,但这应该让你开始: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)

答案 1 :(得分:0)

当我不得不使用证书和WS时,我也遇到了很多问题。 Use the certificates MMC并验证:

  • 您将证书放在正确的位置。请注意,有一个CurrentUser商店,Machine Store等。请确保根据您的代码将证书放在正确的商店中。
  • 哪个用户正在运行您的应用程序?证书是否位于商店?证书必须对用户可见。
  • 打开证书并确保其受信任(如果没有,您将看到警告)。您可能需要将CA的证书放在“受信任的证书颁发机构”商店中。
  • 确保另一方支持您在每一方使用的算法。
  • 请注意,您正在按发行人名称X509FindType.FindByIssuerName, "name"查找证书,打开证书,确保发行人名称匹配(我猜不是因为它似乎是复制和粘贴示例)。

如果所有这些都失败了,请尝试尝试使用证书位置(我依旧记得能够使用来自一个位置而不是另一个位置的证书的一些问题),以及用于搜索证书的属性。< / p>

另外,因为您询问了有关证书的证书。检查是否存在内部异常并查看 - 这可能是另一个问题。