2012-04-13 11 views
6

मुझे मूल रूप से इस सेवा की ओर मेरे अनुरोध सुरक्षित करने की आवश्यकता है।जेकेएस और/या पीएफएक्स प्रमाणपत्रों का उपयोग कर सी # क्लाइंट से जावा वेब सेवा का आह्वान

मैं एक JAR परीक्षण ग्राहक और दो फ़ाइलों, trust.jks और Client.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 

यह काम करता है, इसलिए मैं दोनों सेवा देख सकते हैं, और सेवा को खुद ठीक से विन्यस्त किया जाना चाहिए।

मेरे सी # ग्राहक (यह .NET 2.0 को लक्षित कर रहा है) अनुरोध पर कार्रवाई करने के लिए एक सामान्य वेब संदर्भ का उपयोग करता है:

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

सर्वर सेटिंग सेटअप ठीक होना चाहिए।

मैं X509Certificate2 विधियों के साथ फंसे हुए लेकिन मैं कुछ समझने के साथ बाहर नहीं आ सकता, इसलिए 'आपने क्या प्रयास किया है?' का जवाब इस समय सवाल यह है कि 'मुझे वास्तव में पता नहीं है कि पहले स्थान पर क्या प्रयास करना है'।

किसी भी मदद की वास्तव में सराहना की जाएगी।

+0

AFAIK जेकेएस स्टोर एक मालिकाना जावा समाधान है। आपको कीटोल का उपयोग करके सार्वजनिक कुंजी (शायद पूरी श्रृंखला) निर्यात करना होगा और इसे पीकेसीएस जैसे खुले प्रारूप स्टोर में आयात करना होगा। – home

+0

सही, हालांकि मैं इसके बजाय विश्वसनीय प्रमाणपत्रों को अलग से ले जाऊंगा और उन का उपयोग करूंगा। पीएफएक्स में पहले से ही निजी कुंजी और प्रमाणपत्र श्रृंखला होनी चाहिए। –

+0

तो, अगर मैं सही ढंग से समझता हूं, तो मुझे किसी भी तरह से अपने क्लाइंट को जेकेएस फ़ाइल को खाद्य करने की आवश्यकता है? सोचो कि मैं थोड़ा और अधिक Google ... – 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 अनुरोधों को सफलतापूर्वक पार करने की अनुमति देता है।