1

Web サービスを使用する VB.NET デスクトップ アプリケーションを実装しています。

Web サービスは Java で実装されており、現在、ローカルホストで Tomcat を使用して Web サービスをホストしています。

Web サービスはクライアントとの安全な通信を必要とするため、Java の keytool.exe を使用して 2 つの .jks キーストア (クライアント用とサーバー用) を作成し、2 つの .cer 証明書 (1 つ) を作成する方法を概説した手順に従いました。クライアント用とサーバー用)

キーストアと証明書の生成を、Web サービスが期待するディレクトリに配置しました (指示に従って)

証明書を TrustedPeople にインストールし、次のように ClientCredentials.ClientCertificates プロパティを設定して証明書を使用しようとしました。

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

メソッドを呼び出そうとすると、次のエラー メッセージが表示され続けます。

<wsse:Security> ヘッダーの処理中にエラーが検出されました

私の問題は、Web サービスを使用している VB.NET クライアント アプリケーションでこれを使用する方法がわからないことです。私はこれを完全に間違っている可能性があります。このトピックに関するガイダンスをいただければ幸いです。

ありがとうございました、

-フリニー

4

2 に答える 2

0

証明書と WS を使用する必要があったとき、それらにも多くの問題がありました。証明書 MMCを使用して、次のことを確認します。

  • 証明書を正しい場所に置いたこと。CurrentUser ストア、Machine Store などがあることに注意してください。コードに従って、証明書を正しいものに入れていることを確認してください。
  • アプリケーションを実行しているユーザーは? 証明書はストアにありますか? 証明書はユーザーに表示されている必要があります。
  • 証明書を開き、信頼されていることを確認します (信頼されていない場合は警告が表示されます)。CA の証明書を Trusted Certification Authorities ストアに配置する必要がある場合があります。
  • それぞれの側で使用するアルゴリズムが、もう一方の側でサポートされていることを確認してください。
  • 発行者名で証明書を探していることに注意してください。証明書をX509FindType.FindByIssuerName, "name"開いて、発行者名が一致していることを確認してください(例からコピー&ペーストしたように見えるので、そうではないと思います)。

これらすべてが失敗した場合は、証明書の場所 (ある場所からの証明書を使用でき、別の場所からの証明書を使用できないという問題を漠然と覚えています) と、証明書の検索に使用するプロパティを試してみてください。

さらに、あなたが証明書について尋ねたので、証明書について答えました。内部例外があるかどうかを確認して確認することをお勧めします。これは別の問題である可能性があります。

于 2010-09-26T11:32:44.947 に答える
0

私は 10 年間 VB をコーディングしていませんが、これで始めることができます: http://www.example-code.com/vbdotnet/ssl_client_certificate.asp

特に、これは証明書を含むファイルをロードしているように見えます: certStore.LoadPfxFile("chilkat_secret.pfx","secret")

これにより、証明書が抽出され、接続に使用されます。

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)
于 2010-09-16T14:14:43.933 に答える