2012-04-13 15 views
6

Temel olarak bu hizmete yönelik istekleriimi sağlamalıyım.JKS ve/veya PFX sertifikalarını kullanarak C# istemcisinden Java web hizmetini çağırmak

Ben JAR Test istemcisi ve iki dosya, trust.jks ve Client.pfx temin ettik, ama onları nasıl kullanılacağı hiçbir ipucu var: Ben X509Certificate2 sınıfı bir şekilde katılır anlıyoruz.

testi istemci çalıştırmak için komut satırı şöyledir:

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 

Çalışıyor, bu yüzden her iki hizmet görebilir ve Hizmetin kendisi düzgün şekilde yapılandırılmalıdır.

Benim C# istemci (o .NET 2.0 hedeflediğinden) isteklerini gerçekleştirmek için normal bir Web Başvurusu kullanır:

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

Sunucu ayarları düzgün kurulum olmalıdır.

X509Certificate2 yöntemleriyle dolaştım ama mantıklı olan bir şeyle çıkamıyorum, bu yüzden 'ne denediniz?' Şu anda soru 'ilk etapta ne denemem gerektiğini gerçekten bilmiyorum'.

Herhangi bir yardım gerçekten takdir edilecektir.

+0

AFAIK JKS mağazası tescilli bir Java çözümüdür. Genel anahtarları (belki de tüm zinciri) tuş kilidini kullanarak dışa aktarmalı ve PKCS gibi açık bir format deposuna almalısınız. – home

+0

Doğru, güvenilir sertifikaları ondan ayrı olarak almayı ve kullanmayı tercih ediyorum. Pfx zaten özel anahtar ve sertifika zincirini içermelidir. –

+0

Yani, eğer doğru anlarsam, JKS dosyasını istemcime bir şekilde değiştirebilir miyim? Biraz daha etrafta dolaşacağımı düşünüyorum ... – Alex

cevap

7

Dışarı çıktı JKS dosyayla hiçbir şey yapmanıza gerek yok.

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

Bu, HTTPS isteklerimin başarılı bir şekilde geçmesine izin verir.

İlgili konular