2016-03-10 4 views
5

मैं एचटीटीपीएस कनेक्शन के लिए उपलब्ध सिफर के संबंध में अपने डेल्फी webservice में ओपनएसएसएल का उपयोग करने के बारे में थोड़ा उलझन में हूं।डेल्फी webservice में ओपनएसएसएल का उपयोग करना - उपलब्ध प्रोटोकॉल और सिफर

सेटअप:

  • मेरे वेब सेवा एक ग्राहक के सर्वर पर चलाता है। ओपनएसएसएल वहां स्थापित है। वेब सेवा HTTPS
  • से अधिक इंडी (एक TIdHTTPWebBrokerBridge) और OpenSSL DLLs (TIdServerIOHandlerSSLOpenSSL के साथ) का उपयोग करता है ग्राहक के प्रमाण पत्र को लोड करने
  • हमारे Android/iOS एप्लिकेशन इसका वेब सेवा से कनेक्ट ग्राहक एक डोमेन और आईपी कि एप्लिकेशन उपयोगकर्ताओं को कॉन्फ़िगर किया है मेरे webservice से कनेक्ट और पहुंच सकते हैं। यदि हम उस डोमेन का परीक्षण करते हुए उदाहरण का परीक्षण करते हैं the SSLLabs server test हमें समर्थित सिफर और प्रोटोकॉल का एक सिंहावलोकन मिलता है (एसएसएललैब्स डिवाइस और ब्राउज़रों से हैंडशेक की नकल भी करता है और दिखाता है कि सिफरों की बातचीत किस प्रकार हुई थी)।

प्रश्न: क्या मेरी वेब सेवा (OpenSSL के साथ संयोजन में) है करना है/ऐप्स और वेब सेवा के बीच TLS हैंडशेक के लिए उपलब्ध सिफर प्रभावित करने के लिए कर सकते हैं? क्या ओपनएसएसएल के साथ कुछ अतिरिक्त स्थापित करने की आवश्यकता है?

मैंने सोचा कि जवाब 'नहीं' है, यानी यह केवल सर्वर सेटअप है (एंड्रॉइड/आईओएस के माध्यम से ऐप के साथ हैंडशेक में) यह निर्धारित करता है कि कौन से सिफर उपलब्ध सर्वर से उपयोग करें। क्या यह एक सही धारणा है? या मुझे कुछ याद आती है?
(वास्तव में, मैं वास्तव में उपलब्ध सिफर को सीमित या विस्तारित करने में रूचि नहीं रखता हूं, लेकिन ग्राहक जोर देता है कि webservice/OpenSSL में कुछ "किया जाना चाहिए" ताकि इसे ऐप्स के साथ "सुरक्षित रूप से" संवाद किया जा सके। एसएसएलएलएब्स परीक्षण से पता चलता है कि उनके डोमेन केवल आरएसए कुंजी एक्सचेंज तंत्र के साथ टीएलएस 1.0 और सिफर का समर्थन करते हैं, इसलिए कोई सही फॉरवर्ड गोपनीयता नहीं है। मेरे लिए ऐसा कुछ दिखता है जिसे वैसे भी ठीक करने की आवश्यकता है)।

नोट्स:

  • This SO question पता चलता है मैं कुछ करने के लिए हो सकता है, लेकिन यह कोई उत्तर नहीं है।

  • मैंने an earlier somewhat related question पोस्ट किया है, लेकिन इसका कोई जवाब नहीं है।

  • This SO post राज्यों OpenSSL सम्मान ग्राहक के सिफर वरीयता, नहीं सर्वर, एसएसएल हाथ मिलाना दौरान, जो फिर से वहाँ की सलाह देते हैं बातें मैं क्या कर सकते हैं कर रहे हैं?

  • मुझे कुछ संदेह थे कि यह प्रश्न यहां उचित स्थान पर है (क्योंकि Why we are not customer support), लेकिन चूंकि यह अधिक प्रोग्रामर के लिए प्रासंगिक हो सकता है, इसलिए मैंने इसे एसओ पर रखने का फैसला किया।

उत्तर

4

आप (TIdServerIOHandlerSSLOpenSSL.SSLOptions.SSLVersions के माध्यम से और साथ ही SSL/TLS संस्करण) TIdServerIOHandlerSSLOpenSSL.SSLOptions.CipherList के माध्यम से उपलब्ध सिफर निर्दिष्ट कर सकते हैं।

यदि आप चाहते हैं बिल्कुल सही फॉरवर्ड गोपनीयता, आप गया है openssl.exe का उपयोग कर DHParam कुंजी बनाने (परिणाम फ़ाइल नाम से TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile भरने)।यदि आप न केवल डीएचई चाहते हैं, लेकिन ईसीडीएचई सिफर आपको कुछ अतिरिक्त openssl एपीआई कॉल करने की आवश्यकता है, उदाहरण के लिए a Support for Perfect Forward Secrecy in SSL with indy 10 देखें।

+0

आपके उत्तर के लिए धन्यवाद, माइकल। अब मेरे पास शुरू करने के लिए एक जगह है। मैं बाद में आपके कोड को वास्तविक कोड उदाहरणों के साथ संपादित कर सकता हूं। –

+0

इंडी 10.5.8.0 के साथ मेरे वर्तमान संस्करण डेल्फी XE2 में 'TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile' जैसी कोई चीज नहीं है। मैंने कॉन्टेक्स्ट तक पहुंचने के लिए उस एम्बरकेडरो पोस्ट में संरक्षित हैक की तरह कुछ करने की कोशिश की, लेकिन इसमें कोई डीएच पैरामीटर गुण नहीं है। –

+0

मैं इंडी 10.6.0.5122 के साथ डेल्फी एक्सई 6 का उपयोग करता हूं। आप www.indyproject.org पर इंडी का नवीनतम संस्करण डाउनलोड कर सकते हैं और पता लगा सकते हैं कि वास्तव में DHParamsFile का उपयोग कैसे किया जाता है। असल में, इस फ़ाइल की सामग्री मेमोरी में लोड की गई है और इसे संदर्भ में रखा गया है (ओपनएसएसएल एपीआई फ़ंक्शंस: BIO_new_mem_buf, PEM_read_bio_DHparams, SSL_CTX_set_tmp_dh)। –

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