2012-11-14 21 views
8

पर HTTPS के साथ HttpListener मैंने मोनो टच में HttpListener का उपयोग करके एक बहुत ही सरल वेब सर्वर लागू किया। सब कुछ ठीक काम कर रहा है। अब मुझे एचटीटीपीएस समर्थन जोड़ने की जरूरत है। मैं सेमोनो टच

Httplistener with https support

चरणों का पालन करने की कोशिश की, लेकिन मैं जहां MonoTouch में प्रमाण पत्र स्थापित करने के लिए पता नहीं है। बस उपसर्ग "https: // *: 443" जोड़ना मदद नहीं करता है, क्योंकि कोई कनेक्शन संभव नहीं है और कोई अपवाद नहीं फेंक दिया जाता है।

http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx के अनुसार, इस हो सकता है क्योंकि एक सर्वर प्रमाणपत्र निर्दिष्ट करने के लिए है ("आप HttpCfg.exe का उपयोग करके सर्वर प्रमाणपत्र और अन्य श्रोता विकल्पों को कॉन्फ़िगर कर सकते हैं")।

मैं इसे मोनो टच में कैसे कर सकता हूं?

उत्तर

7

यह एक बहुत अच्छा सवाल है। कुछ मामलों में, HttpListener के लिए, .NET को किसी एप्लिकेशन की कॉन्फ़िगरेशन को ट्विक करने के लिए टूल या .config फ़ाइलों (System.Configuration का उपयोग करके) की आवश्यकता होती है। कई मामलों में एपीआई एक ही उद्देश्य प्राप्त करता है, लेकिन हमेशा नहीं (और इस मामले में नहीं)।

समाधान यह देखने के लिए मोनो के स्रोत कोड को देखने के लिए है कि यह HttpCfg.exe उपकरण को एप्लिकेशन के लिए सेटअप करने की अपेक्षा करता है। github से:

string dirname = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData); 
string path = Path.Combine (dirname, ".mono"); 
path = Path.Combine (path, "httplistener"); 
string cert_file = Path.Combine (path, String.Format ("{0}.cer", port)); 
if (!File.Exists (cert_file)) 
    return; 
string pvk_file = Path.Combine (path, String.Format ("{0}.pvk", port)); 
if (!File.Exists (pvk_file)) 
    return; 
cert = new X509Certificate2 (cert_file); 
key = PrivateKey.CreateFromFile (pvk_file).RSA; 

तो समाधान एक ही निर्देशिका संरचना (यह संभव है के बाद से यह Documents निर्देशिका के अंतर्गत इंगित करेगा) बना सकते हैं और .cer फ़ाइल (बाइनरी DER- एन्कोड प्रमाण पत्र) और .pvk फाइल कॉपी (करने के लिए है जो प्रारूप में निजी कुंजी है कि makecert बनाता है) पोर्ट नंबर के साथ फ़ाइल नाम के रूप में।

उन फ़ाइलों के साथ आप HttpListener शुरू करने में सक्षम होना चाहिए और एसएसएल अनुरोधों को संभालने के लिए आवश्यक आवश्यक प्रमाणपत्र और निजी कुंजी लोड करनी चाहिए।

+1

इसे काम करने के लिए, .cer और .pvk फ़ाइलों को <एप्लिकेशन की दस्तावेज़ निर्देशिका>/config/.mono/httplistener – zmit

+0

में पोस्ट करना होगा इसे पोस्ट करने के लिए धन्यवाद !! मुझे लगता है कि आपको यह मोनो टच में काम कर रहा है? मैं इसे मोनोड्रॉइड पर काम करने की कोशिश कर रहा हूं। मैं यह नहीं समझ सकता कि सही जगह पर प्रमाणपत्र और पीवीके फाइल कैसे प्राप्त करें। मैंने उन्हें "संपत्ति" के रूप में जोड़ा लेकिन यह काम नहीं लग रहा था। :-( – exvance

+0

क्या यह सिर्फ मुझे है या यह एचटीटीपीएस के उद्देश्य को हराने के लिए करता है, क्योंकि यह केवल बंडल से बाहर या फाइल सिस्टम से बाहर निजी कुंजी को डाउनलोड करना मुश्किल नहीं होगा? – borrrden

संबंधित मुद्दे