2012-04-13 7 views
6

私は基本的にこのサービスに対する私の要求を保護する必要があります。JKSおよび/またはPFX証明書を使用してC#クライアントからJava Webサービスを呼び出す

私はJARテストクライアントと二つのファイル、trust.jksClient.pfxを提供してきたが、私はそれらを使用する方法を見当もつかない:私は、X509Certificate2クラスが何らかの形で関与している理解しています。

テストクライアントを実行するコマンドラインは以下の通りです:

java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStore=Client.pfx -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=******** -jar TestClient.jar https://myServiceurl 

それは動作しますので、私は両方のサービスを見ることができ、サービス自体が適切に設定する必要があります。

私のC#クライアントは、(それは.NET 2.0をターゲットです)要求を実行するために、通常のWeb参照を使用しています。

wsReferenceClient service = new wsReferenceClient(); 
//certificate code here ? 
//maybe service.ClientCertificates.Add(<X509Certificate2 object built somehow>); ? 
service.MyRequest(myParameters); 

サーバーの設定が適切に設定する必要があります。

私はX509Certificate2の方法でうんざりしましたが、私は意味をなさないものを出すことができないので、あなたは何を試しましたか?現時点での質問は、「私は最初に何を試してみるべきかわからない」ということです。

本当にありがとうございます。

+0

AFAIK JKSストアは、独自のJavaソリューションです。 keytoolを使用して公開鍵(おそらくチェーン全体)をエクスポートし、それをPKCSのようなオープンフォーマットストアにインポートする必要があります。 – home

+0

正しいですが、私はむしろ信頼できる証明書を別々に取って、それを使用したいと思います。 pfxには既に秘密鍵と証明書チェーンが含まれている必要があります。 –

+0

それで、私が正しく理解すれば、JKSファイルを何らかの形で私のクライアントに食べさせる必要がありますか?私はもう少し周りにグーグルだろうと思う... – Alex

答えて

7

は私がJKSファイルで何もする必要はありませんが判明します。

wsReferenceClient service = new wsReferenceClient(); 
X509Certificate2 cert = new X509Certificate2(); 
cert.Import("Client.pfx", "<the password>", DefaultKeySet); 
service.ClientCertificates.Add(cert); 
service.MyRequest(myParameters); 

これにより、HTTPS要求が正常に実行されます。

関連する問題