Cấu hình HTTPS trên Devilbox

Đây là phần thứ 9 trong tổng số 13 phần thuộc loạt bài nói về Devilbox

Có thể bạn đã biết, vào cuối 01/2017, Google đã cảnh báo tới người dùng Google Chrome rằng sẽ đánh dấu các website không sử dụng HTTPS bằng biểu tượng non-secure. “Cảnh báo này thì liên quan gì tới Devilbox cơ chứ ?!”.

Cảnh báo này hết sức hữu ích với người dùng khi truy cập các website có sử dụng các thông tin cá nhân nhạy cảm như mật khẩu hay thông tin thanh toán. Bằng việc sử dụng HTTPS, các kết nối giữa website và trình duyệt sẽ được đảm bảo an toàn và bảo mật hơn. Từ đó, giúp người dùng cảm thấy yên tâm hơn khi sử dụng.

Đến thời điểm hiện tại, Google thống kê được đã có khoảng 95% các website cài đặt HTTPS (https://transparencyreport.google.com/https/overview). Một số website còn bị cảnh báo buộc người dùng phải xác nhận nếu muốn truy cập.

Hoặc một số tính năng yêu cầu microphone hay webcam sẽ không sử dụng được nếu website không có HTTPS.

Nói như vậy để các bạn thấy được sự quan trọng của HTTPS trong môi trường internet ngày nay. Cơ mà tôi dài dòng như vậy để làm gì nhỉ? Chẳng phải gần như tất cả các website ngày nay đều sử dụng HTTPS sao? Thậm chí sản phẩm sắp tới của tôi cũng chắc như bắp là sẽ cài đặt HTTPS rồi?

Bạn nói đúng rồi? Nhưng bạn quên là các sản phẩm trước khi release đều trải qua quá trình development. Mà quá trình development này thì gần như là từ máy tính cá nhân của chúng ta? Chính là cái localhost. Mà localhost thì mặc định đâu có cài đặt sẵn HTTPS. Đó đó, bạn bắt đầu hiểu ý tôi rồi đó. Nội dung bài viết này chính là hướng dẫn cài đặt HTTPS cho localhost phục vụ cho quá trình development. Chính xác hơn là HTTPS với Devilbox.

Nhưng để hiểu rõ hơn những gì mà chúng ta sẽ làm tiếp theo, hãy nói thêm một chút về trình duyệt và quá trình xác thực chứng chỉ trong HTTPS.

Một chút về trình duyệt và xác thực chứng chỉ SSL

Do đây không phải là nội dung chính và để tránh dài dòng, tôi sẽ ngắn gọn về quá trình này như sau:

  1. Chứng chỉ SSL sẽ được cấp bởi một cơ quan chứng nhận đáng tin cậy – Certification Authority gọi tắt là CA.
  2. Khi một CA phát hành SSL cho domain của bạn, SSL đó sẽ bao gồm rất nhiều thông tin. Một số dành cho mục đích mã hóa dữ liệu giữa browserserver. Một số thì nhằm chứng minh đó là chứng chỉ do CA phát hành.
  3. Nhằm đảm bảo thông tin chứng minh chứng chỉ là do đúng CA đó phát hành, sẽ có một CA khác đứng ra xác thực với cơ chế tương tự như trên.
  4. Để vòng lặp trên có điểm dừng khi có quá nhiều CA phải chứng minh cho nhau theo chuỗi A → B → C, sẽ phải có một Root CA đứng cuối cùng. Root CA sẽ chứa chứng chỉ mà chúng ta hoàn toàn tin tưởng. Nó sẽ chứng minh được tất cả các thông tin từ SSL là hoàn toàn chính xác.
  5. Các trình duyệt đều có một danh sách Root CA chứa các chứng chỉ mà trình duyệt đó tinh tưởng. Hiện tại thì Google, MozillaMicrosoft đều đang sử dụng chung một số các chứng chỉ được tổng hợp tại đây.

Khi tạo một dự án, mặc định Devilbox đã tự phát hành một chứng chỉ số cho tên miền của dự án đó. Nhưng nó sẽ không hoạt động bởi vì nó là dạng Self-signed certificate, tạm dịch là chứng chỉ số tự ký. Thì đúng rồi, vì nó tự phát hành bởi Devilbox mà. Nó không hoạt động được vì có CA nào chứng thực cho nó đâu.

Do đó, để làm cho chứng chỉ này hoạt động, chúng ta cần cấu hình Root CA của Devilbox cho trình duyệt. Việc này nhằm giúp trình duyệt chứng minh những thông tin mà chứng chỉ của Devilbox cung cấp là đúng. Nhưng mà mình sẽ lấy chứng chỉ Root CA của Devilbox ở đâu? Yên tâm, Devilbox đã tạo ra nó lúc khởi động rồi. Mặc định nó sẽ nằm trong thư mục ca của thư mục cài đặt Devilbox:

├── devilbox
    ├── ca
        ├── devilbox-ca.crt
        ├── devilbox-ca.key
        └── devilbox-ca.srl

OK, nếu bạn đã hiểu vấn đề rồi thì vào việc thôi. Đầu tiên chúng ta sẽ cùng nhau cấu hình cho trình duyệt đến từ nhà Google – Google Chrome.

Cài đặt Root Certificate cho Google Chrome

  1. Vào mục Settings → Tìm kiếm Manage certificate.
  2. Tại hộp thoại Authorities → Import.
  3. Chọn đường dẫn đến tập tin chứng chỉ của Devilbox là devilbox-ca.crt.
  4. Tại mục Certificate Store, giữ nguyên giá trị Trusted Root Certification Authorities.
  5. Hoàn tất cài đặt.
  6. Xác nhận cảnh báo bằng cách chọn Yes.
  7. Kiểm tra lại chứng chỉ đã được cài đặt thành công hay chưa?
  8. Khởi động lại trình duyệt. Truy cập vào URL dự án với giao thức https và xem kết quả:

Tadaa! Thành công rực rỡ luôn. Tiếp theo, chúng ta sẽ cùng nhau tìm hiểu cách cài đặt cho một trình duyệt nổi tiếng khác. Đó là Firefox.

Cài đặt Root Certificate cho Firefox

  1. Vào mục Settings → Tìm kiếm CertificatesView Certificates.
  2. Tại hộp thoại Certificate Manager -> Authorities → Import → Chọn đường dẫn đến tập tin devilbox-ca.crt.
  3. Chọn hết hai tùy chọn và nhấn OK.
  4. Kiểm tra lại chứng chỉ đã được cài đặt thành công hay chưa. Nhấn OK.
  5. Truy cập vào URL dự án với giao thức https và xem kết quả:

Tadaaaa! Thành công lần nữa. Đúng là đơn giản như đang giỡn.

Kết luận

Chúng ta đã hoàn thành xong việc cấu hình HTTPS cho Devilbox. Thông qua đó lại hiểu thêm một chút về cách mà trình duyệt xác thực chứng chỉ SSL mà CA đã phát hành cho tên miền của chúng ta. Nói một cách khác, qua ví dụ này, chính chúng ta đã trở thành một CA cho trình duyệt. Nghe có vẻ oách xà lách ghê hén!

Lại nói thêm một chút. Tuy đây về bản chất vẫn là localhost nhưng với Devilbox, mỗi dự án đều có tên miền riêng. Vì vậy, việc thiết lập này giúp bạn thấy được dự án sẽ như thế nào khi chính thức vận hành trên môi trường internet. Đặc biệt là dễ dàng kiểm tra các tính năng đòi hỏi website phải có HTTPS.

Bật mí một chút là các bạn có thể sử dụng đoạn mã sau để kiểm tra xem tên miền đã cài chứng chỉ số hay chưa:

openssl s_client -showcerts -connect khuyennguyen.dev:443

Thay giá trị khuyennguyen.dev bằng bất cứ tên miền nào bạn muốn. Nếu kết quả trả về là danh sách các CA đại loại như thế này thì tên miền đã cài đặt SSL thành công.

Còn như ví dụ này thì là chưa

Với câu lệnh trên thì chúng ta có thể dễ dàng biết được website của mình đang gặp vấn đề ở đâu khi cấu hình HTTPS. Rất có giá trị phải không nào?

Trong nội dung tiếp theo, tôi sẽ tiếp tục hướng dẫn bạn cách cấu hình sao cho mỗi dự án trong Devilbox sẽ chạy một phiên bản PHP. Let’s go!

Tham khảo

HTTPS Required for Collecting Sensitive Information in Chrome as of January 2017 (searchenginejournal.com)

© 2024 - 2025
Khuyên Nguyễn
Made with in CT