2011-06-14 12 views
11

मेरे पास एक क्लाइंट एप्लिकेशन है जो https पर एक वेब सेवा से जुड़ता है। मुझे वेब सेवा और मेरे क्लाइंट के बीच सभी नेटवर्क यातायात को "स्नीफ" करने की आवश्यकता है ताकि यह जांच सके कि सबकुछ ठीक है या नहीं, यानी मुझे कनेक्शन को डीबग करना होगा।एक एसएसएल कनेक्शन डीबग कैसे करें?

मैंने वायरशर्क की कोशिश की है, लेकिन चूंकि मेरे पास सर्वर निजी कुंजी नहीं है, इसलिए वायरसहार्क स्क्रीन पर दिखाया गया डेटा निश्चित रूप से एन्क्रिप्टेड है।

क्या मेरे क्लाइंट और वेब सेवा के बीच एसएसएल नेटवर्क यातायात का निरीक्षण करने का कोई तरीका है जब मेरे पास सर्वर तक पहुंच नहीं है और इसलिए निजी कुंजी और अन्य संबंधित सामान हैं?

अग्रिम धन्यवाद।

उत्तर

4

इसे देखें: Debugging SSL communications

मुझे पता है कि सैद्धांतिक रूप से यह किया जा सकता है - आप एक प्रॉक्सी सेट कर सकते हैं जो लक्षित वेब-सेवा के साथ संचार करता है, इस प्रॉक्सी के माध्यम से कनेक्ट करने के लिए अपने एप्लिकेशन को इंगित करें। इसकी एक ज्ञात सीमा - एचटीपीएस आपको लगता है कि आप अपनी मशीन पर स्थापित सभी प्रॉक्सी और प्रमाणपत्रों पर भरोसा करते हैं। इसका Man-in-the-middle attack का एक रूप है।

देखें कि Fiddler कुछ उपयोगों का होगा।

Man-in-the-middle attacks

एक मैन-इन-मध्यम हमले में, हमलावर अवरोध उपयोगकर्ता यातायात साख और अन्य प्रासंगिक जानकारी पर कब्जा करने की। हमलावर वास्तविक जानकारी गंतव्य नेटवर्क तक पहुंचने के लिए इस जानकारी का उपयोग करता है। प्रक्रिया के दौरान, हमलावर आमतौर पर को प्रॉक्सी/गेटवे के रूप में कार्य करता है जो उपयोगकर्ता को झूठी SSL VPN साइट प्रस्तुत करता है; यह प्रॉक्सी/गेटवे प्रमाणीकरण पास करता है जो उपयोगकर्ता पर वास्तविक गंतव्य साइट पर प्रवेश करता है।

+0

एक HTTP प्रॉक्सी आपको HTTPS ट्रैफ़िक के लिए उपयोग करने में सक्षम नहीं होगी: यह सब कुछ सीधे लक्ष्य सर्वर पर निर्भर करता है। (आप सर्वर के पते और बंदरगाह को देख सकते हैं।) – Bruno

+0

@ ब्रूनो, एक नियमित HTTP प्रॉक्सी नहीं होगी, लेकिन आपके पास प्रॉक्सी हो सकती है जो ऐसा करता है। कॉर्पोरेट निगरानी उपकरण हैं जो बस ऐसा करते हैं। यह आपकी मशीन पर एक विश्वसनीय प्रमाण पत्र जोड़ने और एचटीटीपीएस सर्वर के साथ सभी संचार छेड़छाड़ करने पर निर्भर करता है। – YetAnotherUser

+0

नहीं, आपको सुरक्षित होने के लिए HTTPS कनेक्शन के लिए HTTP प्रॉक्सी पर भरोसा नहीं करना है, केवल आपकी मशीन पर CA प्रमाण पत्र। एक HTTP प्रॉक्सी एचटीटीपीएस कनेक्शन को अवरुद्ध या परिवर्तित नहीं करता है, यह मुश्किल से आगे बढ़ता है, संपूर्ण एसएसएल/टीएलएस एक्सचेंज शामिल है (HTTP 'कनेक्ट' विधि देखें)। – Bruno

0

यदि आपके पास सर्वर की निजी कुंजी तक पहुंच नहीं है, तो एसएसएल/टीएलएस द्वारा संरक्षित किया जा रहा है यह देखने के लिए आप इतना कुछ नहीं कर सकते हैं। (आपको कम से कम प्रारंभिक हैंडशेक देखना होगा।)

यदि आपके पास क्लाइंट पर पूरा नियंत्रण है, तो आप एक नकली सर्वर लिख सकते हैं जिसमें एक निजी कुंजी और प्रमाणपत्र होगा जिसे आप नियंत्रित करते हैं, और यह सबकुछ रिले करेगा ग्राहक द्वारा वास्तविक सर्वर पर भेजा गया। इसके लिए, आपको क्लाइंट को अपने प्रमाण पत्र पर भरोसा करना होगा, इसलिए आपको ग्राहक के नियंत्रण की आवश्यकता है। सही होस्ट नाम से कनेक्शन बनाने के लिए, इसके बजाय आपके नकली सर्वर पर जाने के लिए, DNS स्पूफ़िंग करने के लिए क्लाइंट पर संबंधित hosts फ़ाइल को ट्विक करना आसान हो सकता है।

4

क्या आपके पास पाइथन स्थापित है?

पिप स्थापित mitmproxy

mitmproxy -p 1234

भी के लिए एक video आप

(वैसे, मैं पड़ा apt-get एक apt- के बाद डेबियन निचोड़ पर अजगर-lxml स्थापित अपडेट प्राप्त करें)

2

Burp Suite (यहां तक ​​कि निशुल्क संस्करण) आपको एक एसएसएल "प्रॉक्सी" सेट करने की अनुमति देता है, यह आपके आवेदन के लिए एक अलग प्रमाणपत्र प्रस्तुत करेगा और यह आपके लिए यातायात को डिक्रिप्ट (और प्रदर्शित) करेगा। और यदि आप स्थानीयहोस्ट में सर्वर के साथ परीक्षण करना चाहते हैं तो यह आपको प्रॉक्सी भी सेट करने की अनुमति देता है (कुछ जो मैं विंडोज़ में वायरशर्क और फिडलर के साथ करने में असमर्थ हूं)।