Nginx पर SSL हैंडशेक वार्ता बहुत धीमी गति से


17

मैं 4 Apache उदाहरणों के लिए प्रॉक्सी के रूप में Nginx का उपयोग कर रहा हूं। मेरी समस्या यह है कि एसएसएल बातचीत में बहुत समय (600 एमएस) लगता है। इसे एक उदाहरण के रूप में देखें: http://www.webpagetest.org/result/101020_8JXS/1/3/etetet/

यहाँ मेरा Nginx Conf है:

user www-data;
worker_processes  4;


events {
    worker_connections 2048;
    use epoll;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    access_log  /var/log/nginx/access.log;
    sendfile        on;
    keepalive_timeout  0;
    tcp_nodelay        on;
    gzip  on;
    gzip_proxied any;
    server_names_hash_bucket_size 128;


}

upstream abc {
     server 1.1.1.1 weight=1;
     server 1.1.1.2 weight=1;
     server 1.1.1.3 weight=1;


 }


server {
    listen   443;
    server_name  blah;

    keepalive_timeout 5;

    ssl  on;
    ssl_certificate  /blah.crt;
    ssl_certificate_key  /blah.key;
    ssl_session_cache  shared:SSL:10m;
    ssl_session_timeout  5m;
    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / { proxy_pass http://abc;

                 proxy_set_header X-Real-IP  $remote_addr;
                 proxy_set_header Host $host;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

मशीन 1 G RAM के साथ Linode पर एक VPS है। क्या कोई बता सकता है कि एसएसएल हैंड शेक उम्र क्यों ले रहा है?

जवाबों:


11

आपको "अल्पकालिक डिफी-हेलमैन" सिफर को अक्षम करने की आवश्यकता है। ब्राउज़र वैसे भी उनका उपयोग नहीं करते हैं, लेकिन जब CURL या अपाचेबेन्च जैसे टूल के साथ उपयोग किया जाता है तो ओपनएसएसएल होगा। इसलिए मैं शर्त लगा रहा हूं कि webpagetest.org उनका उपयोग कर रहा है।

देखें इस सूत्र अधिक जानकारी के लिए।

मैं व्यक्तिगत रूप से सर्वर की प्राथमिकताओं के आधार पर सबसे तेज़ लेकिन फिर भी सुरक्षित एसएसएल सिफर्स को मजबूर करने के लिए नगनेक्स में इन सेटिंग्स का उपयोग करता हूं, न कि ब्राउज़र:

अद्यतन 2014-01-13: इस सलाह ने RC4 पर हाल के हमलों, ब्राउज़र अपडेट जो BEAST से रक्षा करते हैं, और ग्राहकों और सर्वरों में TLS v1.2 की अधिक व्यापक उपलब्धता को बदल दिया है।

2015-10-16 अपडेट किया गया: CloudFlare द्वारा अनुशंसित वर्तमान nginx TLS सेटिंग 2015-10-16 । कृपया अद्यतनों के लिए पूर्ववर्ती लिंक की जाँच करें, क्योंकि TLSv1 संभवतः कुछ बिंदु पर अनुशंसित कॉन्फ़िगरेशन से हटा दिया जाएगा। वर्तमान सेटिंग्स इस समय के अनुसार SSLV3 और RC4 को वर्तमान सर्वश्रेष्ठ अभ्यास और नवीनतम PCI-DSS के अनुसार अक्षम करती हैं।

ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers                 EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers   on;

यह इस उत्तर में पहले की सलाह देता है, जिसे दहन से बचने के लिए हटा दिया गया है।


आरसी 4 असुरक्षित है और टीएलएस में उपयुक्त उपयोग नहीं है। "जबकि RC4 एल्गोरिथम को विभिन्न प्रकार की क्रिप्टोग्राफ़िक कमजोरियों (उत्कृष्ट सर्वेक्षण के लिए [26] देखें) के लिए जाना जाता है, यह पहले नहीं पता चला है कि इन कमजोरियों का टीएलएस के संदर्भ में कैसे शोषण किया जा सकता है। यहां हम दिखाते हैं कि नया और हाल ही में। RC4 कीस्ट्रीम में खोजे गए पक्षपात, RC4 को इसके एन्क्रिप्शन एल्गोरिथ्म के रूप में उपयोग करने पर टीएलएस में गंभीर कमजोरियां पैदा करते हैं। " TLS और WPA में RC4 की सुरक्षा देखें ।

2
@noloader कि आरसी 4 हमले की घोषणा मेरी पोस्ट के वर्षों बाद की गई थी; हाल ही में जब तक अधिकांश क्रिप्टोग्राफर टीएलएस v1.0 और इससे पहले के बीईएसटी हमले के कारण एईएस से अधिक आरसी 4 की सिफारिश कर रहे थे। अब जब अधिकांश ब्राउज़र BEAST क्लाइंट-साइड के खिलाफ सुरक्षा करते हैं, और RC4 के खिलाफ आगे हमले हुए हैं, तो सलाह बदल गई है। TLS v1.2 के लिए कुछ अच्छी nginx सेटिंग्स के लिए यह पोस्ट देखें: blog.cloudflare.com/staying-on-top-of-tls-attacks
rmalayter

अरे बाप रे! उसके लिए माफ़ करना। मैंने तारीखों की जांच करने के लिए नहीं सोचा था। माफ़ करना।

5

आपके पास एक अच्छा एंट्रोपी स्रोत नहीं हो सकता है। है /dev/urandomमौजूद हैं? नहीं तो Nginx पढ़ने पर रोक देगा /dev/random

आपकी कुंजी का आकार क्या है? लम्बा पतला होता है।

straceप्रक्रियाओं को देखने की कोशिश करें कि वे क्या कर रहे हैं।


+1 एक अच्छी संभावना की तरह लगता है क्योंकि अक्सर वीपीएन
काइल ब्रान्ड

1

जांचें कि आप DNS रिज़ॉल्यूशन पर कहीं प्रतीक्षा नहीं कर रहे हैं।


0

परिवर्तन

ssl_protocols  SSLv2 SSLv3 TLSv1;

सेवा

ssl_protocols  SSLv3 TLSv1 SSLv2;

क्रम में प्रोटोकॉल की कोशिश करता है कि वे सूचीबद्ध हैं।


वास्तव में मदद नहीं की। देखें webpagetest.org/result/101020_8KVR/1/details - बातचीत अभी भी ले> पूरे समय का 50%।
पारस चोपड़ा

2
SSLv2 का उपयोग नहीं किया जाना चाहिए, यह असुरक्षित है। इस टिप्पणी के समय सभी प्रमुख ब्राउज़र को TLSv1 का समर्थन करना चाहिए, इसलिए SSLv3 की अब आवश्यकता नहीं होनी चाहिए। (आदर्श रूप से यह TLSv1 TLSv1.1 TLSv1.2 होना चाहिए जब तक कि अधिकांश ब्राउज़र 1.1 को नहीं अपनाते)।
केबीजे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.