Câu chuyện về việc triển khai SSP/HTTPS cho các domain ứng dụng doanh nghiệp

by admin

Trong thời gian chuyển đổi lên Cloud và hiện các cert global chỉ được gia hạn 1 năm / lần mặc dù mua mất tiền đàng hoàng, trước là 2 năm / lân. Giờ thì chỉ được 1 năm, và chúng ta phải cấu hình thay cert, công việc lặp lại mỗi năm một lần nhưng tốn khá nhiều và phải mất tới mấy ngày để apply. Để giải quyết vấn đề này, chúng ta có thể sử dụng Ansible hoặc triển khai các dạng kịch bản để apply xuống các Host. Còn đối với Kubernetes hoặc các App Device khác như tổng đài, thiết bị mạng, chúng cũng cung cấp giao diện để thay cert. Nhưng chung quy lại đó là phải thay cert quá nhiều hệ thống, chưa kể mỗi năm có thể đẻ ra thêm hơn chục hệ thống khác hoặc nhiều hơn, việc thay cert rất vất vả và có phần hơi “vô nghĩa”.

Để tự động hóa các tác vụ này, ta có thể triển khai Ansible hoặc kịch bản apply xuống hosts như vừa nêu trên, tuy nhiên có nhiều Web App đặc thù hoặc một số hệ thống thay cert hơi củ chuối một chút, phải viết kịch bản cho các hệ thống này cũng rất mất thời gian, và quan trọng là tính ổn định thấp do chỉ có một team duy trì và quản lý các kịch bản đó, không cover được hết, tỷ lệ thành công thấp.

Ok nói về Let’s Encrypt nào !

Ngày xưa khi mới triển khai Docker hoặc các Web App trên server /EC2 truyền thống, mình thường sử dụng Docker-compose và certbot, lúc đầu thì nhìn có vẻ hơi “cùi” một tí, nhưng thực tế thì nó quá ổn định, phải đến gần 3 năm rồi chưa động vào phần config của nó mà TLS được gen từ Let’s Encrypt vẫn hoạt động đều với chu kỳ 10 ngày sẽ gen lại một lần. Vì vậy Web App luôn được renew HTTPS đều.

Tuy nhiên có một vấn đề và một câu hỏi đó là Let’s Encrypt là Free và nó liệu nó có kém bảo mật hơn không ?

Shopify là một doanh nghiệp lớn về thương mại điện tử, chỉ đứng sau Amazon. Theo như blog họ chia sẻ thì họ có tới 4.5 triệu domain và họ cũng gặp bài toán về cert như đã nêu trên, và dịch vụ về ecommerce thì phải luôn ready mọi giây phút, vì vậy họ quyết định sử dụng toàn bộ hệ thống để auto renew và gen cert từ Let’s Encrypt.

https://shopify.engineering/securing-shopify-domains-letsencrypt

Mấu chốt của Let’s Encrypt đó là gen tới client qua giao thức ACME, giao thức này cũng đã được chuẩn hóa và đưa vào RFC8555. Nó hoạt động chủ yếu là dựa vào Domain Verify, nếu trust đúng domain dựa vào CNAME record hoặc http /.well-known thì nó sẽ thực hiện các bước để mã hóa giao tiếp với client và đẩy cert từ server xuống một cách an toàn. ACME là giao thức để tự động hóa phần cert xuống các hệ thống app và server. Việc sử dụng ACME không chỉ dành cho Let’s Encrypt, mà Let’s Encrypt là bên làm đâu tiên với tool gọi là certbot. Các cert provider khác cũng cung cấp tự động hóa cert qua ACME (không rõ cost là bao nhiêu). Ngoài ra ta có thể tự triển khai ACME server với phần mềm của SmallStep dưới đây opensource luôn nhé. Để tự chủ toàn bộ luồng auto cert renew nội bộ mà không dựa vào LE (Let’s Encrypt) server.

https://github.com/smallstep/certificates

Thank ?

You may also like

Leave a Comment