1. Phân biệt SSL (Secure Sockets Layer) và TLS (Transport Layer Security).
SSL (Secure Sockets Layer) và TLS (Transport Layer Security) đều là các giao thức bảo mật được sử dụng để bảo vệ dữ liệu truyền tải qua mạng. Tuy nhiên, TLS được xem như phiên bản nâng cấp của SSL và có nhiều ưu điểm hơn.
Các khác biệt giữa SSL và TLS như sau:
- Phiên bản ban đầu của SSL đã được phát triển vào những năm 1990 và đã trải qua một số phiên bản nâng cấp. Tuy nhiên, với sự xuất hiện của TLS vào năm 1999, SSL đã không được phát triển thêm. TLS là phiên bản nâng cấp của SSL và có các tính năng bảo mật tốt hơn.
- SSL sử dụng MD5 hoặc SHA-1 để tạo chữ ký số cho thông điệp, trong khi TLS sử dụng các thuật toán bảo mật mạnh hơn như SHA-256 hoặc SHA-3.
- SSL sử dụng một phương thức bảo mật gọi là CBC (Cipher Block Chaining) để mã hóa dữ liệu. Tuy nhiên, phương thức này đã bị tấn công thành công trong quá khứ. TLS sử dụng các phương thức mã hóa khác nhau như GCM (Galois/Counter Mode) để bảo vệ dữ liệu.
- SSL và TLS sử dụng các cơ chế khác nhau để xác thực máy chủ và khách hàng. TLS sử dụng các chứng chỉ SSL được phát hành bởi các tổ chức được ủy quyền để xác minh danh tính của máy chủ và khách hàng.
Vì những ưu điểm vượt trội về tính bảo mật, hiệu suất và tính năng, TLS được sử dụng phổ biến hơn so với SSL.
2. SSL Certificates trong AWS.
Trong AWS, Load balancer sử dụng một chứng chỉ X.509 (chứng chỉ máy chủ SSL / TLS) để thiết lập kết nối bảo mật. Người dùng có thể quản lý chứng chỉ bằng cách sử dụng ACM (AWS Certificate Manager), hoặc tự tải lên chứng chỉ của riêng họ.
Để thiết lập kết nối HTTPS, người dùng phải chỉ định chứng chỉ mặc định và có thể thêm danh sách các chứng chỉ tùy chọn để hỗ trợ nhiều tên miền. Ngoài ra, khách hàng có thể sử dụng SNI (Server Name Indication) để chỉ định tên máy chủ mà họ muốn truy cập.
Ngoài ra, người dùng có thể chỉ định các chính sách bảo mật để hỗ trợ các phiên bản SSL / TLS cũ hơn (cho các máy khách lỗi thời).
Vậy ACM và SNI là gì?
- SNI (Server Name Indication) là một giao thức được sử dụng trong SSL/TLS để cho phép máy chủ (server) có thể hỗ trợ nhiều chứng chỉ SSL/TLS khác nhau cho nhiều tên miền (domain) khác nhau trên cùng một địa chỉ IP. Điều này giúp cho việc quản lý các chứng chỉ SSL/TLS trở nên dễ dàng và linh hoạt hơn.
- ACM (AWS Certificate Manager) là một dịch vụ của Amazon Web Services (AWS) được sử dụng để quản lý các chứng chỉ SSL/TLS. Nó cung cấp khả năng tạo và quản lý các chứng chỉ SSL/TLS miễn phí và dễ dàng tích hợp với các dịch vụ khác của AWS như Elastic Load Balancing, Amazon CloudFront, Amazon API Gateway, và Amazon Elastic Beanstalk.
3. Khả năng hỗ trợ SSL certificate trên các loại Load Balancer trong Amazon Web Services (AWS).
- Classic Load Balancer chỉ hỗ trợ một SSL certificate và phải sử dụng nhiều CLB nếu muốn phục vụ nhiều hostname với nhiều SSL certificates khác nhau.
- Application Load Balancer hỗ trợ nhiều listeners với nhiều SSL certificates khác nhau thông qua tính năng Server Name Indication (SNI).
- Network Load Balancer cũng hỗ trợ nhiều listeners với nhiều SSL certificates khác nhau thông qua tính năng SNI.
4. Thực hành.
– Classic Load Balancer.
Chúng ta hãy bắt đầu khảo sát Classic Load Balancer bằng cách click vào nó, chọn Listeners và bấm vào Edit.
Tại phần Edit listeners, bấm vào Add để thêm HTTPs, bấm vào Change để chọn các SSL Certificates được AWS hỗ trợ.
Dưới đây là các giao thức SSL Certificates được AWS hỗ trợ, phần này mình chỉ view cho các bạn xem thôi chứ không thiết lập nên mình sẽ bấm Cancel ở phần này.
Để thêm SSL Certificates bạn hãy bấm vào Change như dưới.
Bạn có các tuỳ chọn như sau:
- Choose a certificate from ACM (recommended): Nếu bạn muốn chọn 1 SSL Certificates từ ACM.
- Choose a certificate from IAM: Nếu bạn muốn chọn 1 SSL Certificates từ IAM.
- Upload a certificate to IAM: Nếu bạn muốn tự up SSL Certificates đến IAM.
Phần này do mình không có SSL Certificates để demo nên mình sẽ Cancel.
Và qua review các bạn cũng có thể thấy Classic Load Balancer chỉ hỗ trợ 1 SSL Certificates duy nhất, nếu bạn muốn sử dụng nhiều SSL Certificates thì bạn cần tạo nhiều Classic Load Balancer.
2. Application Load Balancer.
Mình sẽ thêm 1 listener khác bằng cách bấm vào Add listener.
Chọn giao thức HTTPs, tại phần Default action(s) mình chọn hành động Forward to… đến target group my-first-target-group mà mình đã tạo ở các bài trước.
Bây giờ chúng ta hãy thiết lập một chính sách bảo mật. Tại phần Security policy mình để mặc đinh và các bạn thấy tại phần Default SSL certificate sẽ có 3 tuỳ chọn lấy SSL Certificates từ đâu đó là From ACM (recommended), From IAM và tự Import.
Và hiện tại mình cũng không có SSL Certificates nào nên mình sẽ dừng lại tại đây.
3. Network Load Balancers.
Bây giờ chúng ta hãy xem xét trường hợp của Network Load Balancers, mình sẽ view bằng cách thêm 1 listener mới.d
Có thể nhận thấy Network Load Balancers các thiết lập cũng giống như Network Load BalancersApplication Load Balancer.
Vậy cuối cùng bạn hãy ghi nhớ là Classic Load Balancer sẽ không hỗ trợ ALB và SNI vì nó là phiên bản cũ.