Select Page

SSL/TLS- CDN và giao thức bảo mật Website

SSL/TLS- CDN và giao thức bảo mật Website
This entry is part 5 of 6 in the series CDN- Kiến thức tổng hợp từ A- Z

Sure Socket Layer( SSL) là một giao thức được sử dụng để thiết lập các kết nối an toàn, thường là giữa origin server và trình duyệt web. Tất cả thông tin có thể được truy cập bởi người nhận dự định. Điều này tạo thuận lợi cho việc trao đổi an toàn với các dữ liệu nhạy cảm, bao gồm thông tin đăng nhập, thẻ tín dụng và nội dung email, từ đó chống lại nguy cơ bị tấn công bởi một bên thứ 3 trong cuộc tấn công man-in-the-middle attack.

Cho đến năm 2015, phiên bản cuối cùng của SSL( 3.0) đã chính thức bị phản đối. Nó đã được thay đổi bởi TLS( Transport Layer Security), cung cấp mã hóa mạnh mẽ hơn trong khi phục vụ các chức năng tương tự. Tuy nhiên, nhiều người vẫn xem TLS là SSL/TLS hoặc đơn giản hơn là SSL.

Lần đầu tiên được giới thiệu vào năm 1995, SSL/TLS đóng vai trò quan trọng trong quá trình phát triển của internet, cung cấp cho nó một yếu tố tin tưởng cần thiết để phục vụ như là một nơi kinh doanh. Google chính thức bổ sung TLS vào danh sách các yếu tố xếp hạng vào năm 2014, tiếp tục củng cố tầm quan trọng của giao thức và đẩy nhanh việc áp dụng rộng rãi.

Có rất nhiều điều khi nói về SSL/TLS từ khía cạnh an ninh và kinh doanh. Tuy nhiên, trong hướng dẫn này, tôi chỉ tập trung vào khía cạnh hiệu suất và bảo mật của việc sử dụng SSL kết hợp với mạng phân phối nội dung CDN- một sự lựa chọn ngày càng phổ biến của chủ website.

Làm thế nào một CDN có thể nâng cao hiệu suất SSL/TLS

Vấn đề: Overhead của SSL/TLS handshake.

Để hiểu cách sử dụng CDN có thể cải thiện hiệu suất SSL, trước hết chúng ta hãy xem xét cách kết nối thông thường từ SSL đối với TCP. Một kết nối TCP điển hình được thiết lập thông qua một quá trình được gọi là “three-way handshake”. Trong đó, một khách hàng gửi một yêu cầu kết nối( SYN), nhận được một xác nhận(SYN/ACK) và sau đó trả lời bằng một sự thừa nhận của riêng mình(ACK). Thao tác đóng vòng lặp và thiết lập kết nối an toàn.

1,2,3… đi tới và đi lui. Giả sử không có trục trặc, thời gian cần để hoàn thành phải bằng chính xác một khoảng thời gian đi vòng(RTT). Mặt khác, đàm phán kết nối SSL/TLS đòi hỏi phải có môt vài bổ sung back-and-forths. Điều này là do trình duyệt và máy chủ bây giờ cũng cần phải

  1. Đồng ý với phương pháp mã hóa tương thích lẫn nhau
  2. Đi qua một quá trình xác minh lẫn nhau
  3. Tạo các khóa tương xứng, được sử dụng để mã hóa và giải mã tất cả các thông tin trao đổi trong suốt phiên

Những phương pháp bổ sung này cộng thêm chi phí dẫn đến 2 chuyến đi bổ sung hoặc hơn, tùy thuộc vào cấu hình máy chủ của chúng ta.

Overhead của SSL handshake

Nếu thời gian bay khứ hồi từ San Fancisco đến London của chúng ta là 50ms, thì việc thiết lập một cuộc bắt tay SSL/TLS sẽ mất ít nhất là 150ms.

Cách giải quyết: Sử dụng CDN để làm giảm Round-Trip Time

Đối với hầu hết mọi người, lợi ích bảo mật của SSL vượt trội so với hạn chế của thời gian kết nối dài hơn. Tuy nhiên, chi phí có thể là một phiền toái, đó là lý do nhiều doanh nghiệp trực tuyến sử dụng CDN được thêm vào để bù đắp cho lacenty.

Rút ngắn thời gian round-trip time là một chức năng cốt lõi của dịch vụ CDN– được thiết kế đặc biệt để cải thiện tốc độ phản ứng bằng cách giảm khoảng cách vật lý giữa trang web và người dùng.

Bằng cách cắt giảm round-trip time, CDN cũng tăng tốc tất cả các tương tác trong quá trình SSL/TLS negotiation process. Bởi việc handshake đòi hỏi ít nhất 3 chuyến đi vòng, chúng ta sẽ có 3 lần hiệu quả cho mỗi mili giây của một CDN share off.

Sử dụng CDN làm giảm Round-Trip Time

Nếu thời gian round-trip time từ SanFancisco đến proxy LosAngeles của CDN là 20ms, thì việc thiết lập kết nối SSL/TLS sẽ mất 60ms- ngay cả khi máy chủ vẫn còn lưu trữ ở London. Ở đây việc RTT giảm 30ms sẽ là giảm thời gian handshake xuống còn 90ms.

Giữ EyeOut cho KeepAlive

Lưu ý rằng, kịch bản mô tả ở trên chỉ đúng nếu CDN của chúng ta đã có một kết nối mở với máy chủ gốc. Nếu không, sau khi kết nối đầu tiên của SSL/TLS, CDN vẫn cần bắt đầu quá trình đàm phán thứ hai. Ở đây, phí trên không được giữ nguyên( hoặc thậm chí còn lâu hơn).

Điều quan trọng ở đây là đảm bảo rằng CDN của chúng ta có chức năng giữ lại( keep-alive functionlity), còn được gọi là kết nối liên tục( persitent connection). Với tính năng keep-alive, CDN duy trì kết nối mở với máy chủ giữa các phiên người dùng khác nhau trong vài phút cùng một lúc.

Điều này có nghĩa, miễn là trang web của chúng ta được truy cập ít nhất vài phút, CDN và máy chủ gốc sẽ không phải kết nối lại trong các cuộc đàm phán SSL/TLS bổ sung. Tất cả khách truy cập của chúng ta được hưởng lợi từ thời gian handshake nhanh hơn.

Sử dụng CDN làm giảm Round-Trip Time

Ví dụ:
Sau khi kết nối SSL với LA proxy được thiết lập, trong trường hợp không có keep-alive functionlity, CDN phải mở lại các kết nối với máy chủ gốc London. Thời gian đi lại giữa LA và London là 30ms, vì vậy sẽ mất 90 ms để thương lượng kết nối thứ hai. Điều này làm cho tổng thời gian handshake trở lại 150ms.

Sử dụng CDN để tối ưu hóa Out-Of-The-Box

Như đã đề cập, số lượng các chuyến đi khứ hồi bắt buộc cho một handshake SSL/TLS phụ thuộc vào cấu hình máy chủ của chúng ta. Ví dụ: các chuyến đi vòng lặp thêm xảy ra khi máy chủ của chúng ta không được tối ưu hóa để xử lý các bản ghi TLS ở trên một kích thước nhất định, dẫn đến các tương tác ngược lại.

Ngoài ra, một số cấu hình máy chủ có thể tăng tốc độ truyền thông SSL/TLS, bao gồm:

False Start

Cho phép trình duyệt gửi dữ liệu ứng dụng được mã hóa ngay trước khi quá trình thương lượng SSL hoàn tất.

Flase Start

Session Resumption

Cache thông tin của khách truy cập và máy chủ để giảm thời gian thương lượng cho khách truy cập lại.

Session Resumption

Hầu hết các CDN hiện đại được cấu hình sẵn để tối ưu hóa các giao tiếp SSL/TLS. Chỉ bằng cách sử dụng CDN, bạn sẽ tự động loại bỏ tất cả các tắc nghẽn tiềm ẩn và hưởng lợi từ hiệu suất tối ưu hóa TLS ngay trên out-of-the-box. Cũng nên xem lại cấu hình máy chủ gốc của chúng ta. Điều này chủ yếu nhằm đảm bảo hiệu suất tối ưu được duy trì khi nó kết nối lại với CDN và mở ra một kết nối liên tục mới.

Cách CDN có thể nâng cao bảo mật SSL/TLS

Vấn đề: Giấy chứng nhận- Grade Certificates và điều kiện thực hiện

Như đã biết, truyền thông SSL/TLS dựa vào sự tồn tại của chứng chỉ SSL. Ngoài các khóa công khai được sử dụng để bắt đầu truyền thông mã hóa. Ở đây, điều quan trọng cần lưu ý là chứng chỉ SSL khác nhau về chất lượng và độ tin cậy của chúng.

Thứ nhất, có sự khác biệt giữa các chứng chỉ SSL được mua từ certificate authority- cơ quan chứng nhận chính thức( CA) và các loại miễn phí( self-signed) có thể được tạo ra bằng bộ công cụ OpenSSL.

Trong số đó, chứng chỉ CA rõ ràng là một lựa chọn tốt hơn và đáng tin cậy hơn- vì vậy việc sử dụng chứng chỉ tự ký khiến tất cả khách truy cập của chúng ta nhận được thông báo báo động khi họ cố truy cập tài sản https của chúng ta. Điều này có thể dẫn đến một vết lõm lớn trong lưu lượng truy cập của chúng ta.

URL Website

Thứ hai, tất cả các chứng chỉ SSL/TLS được gọi phân loại dựa trên chất lượng thực hiện cá nhân của họ, thường dựa trên các tiêu chí sau:

  • Protocol support: ưu tiên cho các cài đặt thực thi các giao thức mới nhất.
  • Key exchage support: ưu tiên việc triển khai bằng cách sử dụng mật mã mạnh hơn khi mã hóa các khóa phiên( ví dụ: tham số Diffie-Hellman 2048-bit).
  • Cipher support: ưu tiên cho các cài đặt thực thi mã có mã hóa mạnh hơn(ví dụ: 256-bit).

Giấy chứng nhận- Grade Certificates và điều kiện thực hiện

Vì loại chứng chỉ của chúng ta là kiến thức công cộng và dễ dàng xác định bằng cách sử dụng SSLLabs hoặc một công cụ tương tự, nó cũng phản ánh quan điểm người dùng về trang web của chúng ta.

Tuy nhiên, vượt quá tác động tâm lý tiêu cực, điểm số này cho bạn biết làm thế nào để đảm bảo thực hiện SSL/TLS của chúng ta thực sự và làm thế nào nó có thể bị tổn hại. Rõ ràng, sau này có thể dẫn đến tổn thất tài chính và thiệt hại lâu dài cho thương hiệu và doanh nghiệp.

Cách giải quyết: Chứng chỉ A+ Certificate cho CDN

Sử dụng CDN có nghĩa là kết nối SSL/TLS đầu tiên của bạn luôn được thiết lập bằng chứng chỉ riêng của nhà cung cấp, lưu trữ trên một proxy CDN. Điều này có lợi ích là tự động tối ưu hóa các khía cạnh bảo mật của các giao tiếp SSL của chúng ta.

Triển khai SSL của riêng chúng ta có thể là tối thiểu, và có thể sử dụng chứng chỉ tự ký miễn phí. Từ thời điểm chúng ta bắt đầu sử dụng proxy CDN, tất cả các khách truy cập sẽ được bảo vệ ngay lập tức bởi chứng chỉ A+ Certificate, được ký bởi một trong những CA đáng tin cậy nhất trên thế giới.

Chứng chỉ A+ Certificate cho CDN

Cuối cùng là các lỗ hổng SSL mới xuất hiện, đôi khi chúng ta làm nhà cung cấp CDN có khả năng đáp ứng nhanh hơn bạn nhiều, cập nhật việc triển khai SSL như là một phần của dịch vụ được quản lý của chúng ta.

Đây là trường hợp với các lỗ hổng Heartbleed và POODLE. Những người sử dụng CDN là những người đầu tiên được bảo vệ ngay khi những tin tức về các lỗ hổng nổi lên.

SSL Gets Better miễn phí của Let’s Encrypt

Let’s Encrypt là một cơ quan cấp giấy chứng nhận mở cho phép chúng ta dễ dàng tạo chứng chỉ SSL miễn phí. Một trong những lợi ích của các chứng chỉ này là chúng không gây ra báo động trình duyệt đã đề cập ở phía trên.

Let’s Encrypt được tài trợ bởi nhóm Nghiên cứu An ninh Internet- Internet Security Research Group(ISRG), Mozilla Foundation và một số tổ chức lớn khác.

Two Are Better than One

Ngay cả khi CDN tự động tối ưu hóa kết quả đầu tiên của kết nối SSL của chúng ta, vẫn cần phải cải tiến việc triển khai trên chân thứ hai bằng cách tinh chỉnh cấu hình trên máy chủ gốc.

Mặc dù kịch bản tấn công ở chân thứ hai rất có thể xảy ra, nhưng nguyên tắc “better safe than sorry” được áp dụng- đặc biệt nếu chúng ta đang điều hành doanh nghiệp nổi bật có khả năng bị tấn công không gian mạng.

Kích hoạt HSTS dễ dàng với CDN

HTTP Strict Transport Security(HSTS) là một tính năng bảo mật đảm bảo rằng tên miền của bạn chỉ được truy cập thông qua kết nối SSL/TLS. HSTS đặc biệt hữu ích cho các trang web có nhiều tên miền phụ vì nó có thể được sử dụng để quản lý SSL/TLS một cách dễ dàng trên tất cả các số lượng lớn.

Hầu hết CDN hiện đại làm cho HSTS thực hiện một snap. cung cấp nó như một tính năng out-of-the-box, quản lý trực tiếp từ bảng điều khiển của họ.

Lời kết

Giao thức SSL/TLS có nhiệm vụ nâng cao hiệu suất và bảo mật đối với trang web của chúng ta. CDN có nhiệm vụ giảm thời gian round-trip time bằng việc giảm khoảng cách vật lý giữa người dùng và máy chủ dữ liệu, đặc thù là các CDN proxy. SSL/TLS cung cấp chức năng mã hóa mạnh mẽ hơn với 3 bên, đó là lý do tại sao Google bổ sung TLS vào danh sách các yếu tố xếp hạng vào năm 2014.

CDN và SSL/TLS thực hiện việc handshake để củng cố và cải thiện cho nhau về tốc độ, hiệu suất cũng như mức độ bảo mật của website. SSL/TLS cung cấp chứng chỉ A+ Certificate cho CDN để đảm bảo các kết nối đầu tiên ngắn nhất, sự an toàn tuyệt đối của tất cả visitor đến với website.

Series Navigation<< Tối ưu hóa FEO- Front End OptimizationTối ưu hóa đường truyền- Route Optimization >>

About The Author

Rain Nguyen

Tôi là Rain, người sáng lập và là biên tập viên của blog RN DOT COM. Tôi làm việc để xây dựng một cộng đồng vững mạnh bằng cách hướng dẫn mọi người viết blog kiếm tiền, xây dựng hệ thống kinh doanh của chính mình qua hệ thống bài viết của tôi. Nếu bạn thấy bài viết nào đó hay, hãy chia sẻ nó như một cách giúp tôi hỗ trợ những ai đang khao khát như bạn. I love all my friends!

Leave a reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Tùy chọn tìm kiếm tên miền