عمر جلسة SSL في HTTPS
سؤال
لدينا مناقشة مشتركة (ولكن ودية) بين زملاء العمل حول وقت حياة جلسة SSL الأساسية في اتصال HTTPS.
عندما أقوم بإنشاء اتصال HTTPS بخادم باستخدام متصفح عادي، يقوم SSL الأساسي بإنشاء جلسة (بما في ذلك سر مشترك) باستخدام تشفير غير متماثل، يتم تشفير بقية الاتصالات باستخدام تشفير متماثل (أسرع).
السؤال هو: في طلبات HTTPS التالية (انقر فوق ارتباط) إلى نفس الخادم، هي جلسة SSL القديمة المستخدمة مرة أخرى، وتجنب النفقات العامة للتشفير غير المتماثل لإنشاء مفتاح جلسة؟ أو هو مصافحة SSL المشفرة غير المتماثلة غير المتماثلة لإنشاء جلسة SSL ضرورية؟
أو للكلمة بشكل مختلف: هل تبقى جلسة SSL حية بين طلبات HTTPS، أو هل تنتهي بنهاية طلب HTTPS؟
نظرا لأننا مجموعة من NitPicks هنا، فسيكون هناك إشارة إلى بعض المصدر المسموح به.
المحلول
انظر القسم 2.2 من http://www.ietf.org/rfc/rfc2818.txt. والقسم 8.1 من http://www.ietf.org/rfc/rfc2616.txt.
في جوهرها، يجب الحفاظ على جلسة SSL أثناء حافظ العميل على اتصال مستمر.
لمزيد من المعلومات حول تنفيذ الاتصالات المستمرة في المتصفحات الشعبية http://en.wikipedia.org/wiki/http_persistent_connection#use_in_web_browsers.
نصائح أخرى
اختبار هذا بالكروم:
انتقل إلى https://www.americanexpress.com.. وبعد عروض Netstat:
$ netstat -n -p tcp|grep 184.86.149.155
tcp4 0 0 10.177.78.58.50311 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50310 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50309 184.86.149.155.443 ESTABLISHED
عند التنقل إلى روابط أخرى على الموقع الإلكتروني، تظهر Netstat:
$ netstat -n -p tcp|grep 184.86.149.155
tcp4 0 0 10.177.78.58.50311 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50310 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50309 184.86.149.155.443 ESTABLISHED
تم الاحتفاظ بالجلسة على قيد الحياة. عندما أغلقت علامة التبويب المتصفح، وأعد فتح علامة التبويب، تم فتح اتصال آخر:
$ netstat -n -p tcp|grep 184.86.149.155
tcp4 0 0 10.177.78.58.50398 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50311 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50310 184.86.149.155.443 ESTABLISHED
tcp4 0 0 10.177.78.58.50309 184.86.149.155.443 ESTABLISHED
يبدو أن المتصفحات الحديثة تستخدم نفس مهلة الاحتفاظ بالحياة مثل HTTP. يمكن عرض هذه المهلة هنا:
http://gabenell.blogspot.com/2010/11/connection-keep-alive-timeouts-for.html.
إذا كان متصفحك يدعم عملية استئناف الجلسة وقد تم تخزين الخادم مخزئا بالجلسة، فقد تتمكن من متابعة جلسة بين الاتصالات، يدعم Gnutls هذا ويمكنك رؤية عرض تجريبي هنا: