Cấu hình HTTPS của máy chủ web Apache2 trên máy chủ Ubuntu

Việc truyền dữ liệu giữa máy chủ web và máy khách web qua cổng 80 (HTTP) không được mã hóa. Vì vậy, bất kỳ người trung gian nào giữa máy chủ web và máy khách web đều có thể xem dữ liệu được truyền và có thể đánh cắp thông tin bí mật. Để khắc phục hạn chế này, Giao thức HTTPS qua cổng 443 đã được giới thiệu. HTTPS là một máy chủ web an toàn được cấu hình với chứng chỉ SSL/TLS.

TLS (Bảo mật lớp vận chuyển) và SSL tiền thân của nó (Lớp cổng bảo mật) là các giao thức web được sử dụng để bọc lưu lượng truy cập bình thường trong một trình bao bọc được mã hóa, bảo vệ. Sử dụng công nghệ TLS, máy chủ có thể gửi lưu lượng một cách an toàn giữa máy chủ và máy khách mà không có khả năng tin nhắn bị chặn bởi bất kỳ người trung gian nào.

Trong bài viết trước của tôi, tôi đã thảo luận về cách định cấu hình máy chủ web Ubuntu Apache2 với gói phpMyAdmin. Trong bài viết này, tôi sẽ thảo luận về cách định cấu hình máy chủ web Ubuntu Apache2 với chứng chỉ SSL/TLS để đảm bảo truyền dữ liệu giữa máy chủ web và máy khách web.

điều kiện tiên quyết

Trước khi bắt đầu, chúng ta phải cài đặt một máy chủ web. Cách định cấu hình máy chủ web Ubuntu với gói phpMyAdmin đã được thảo luận trong bài viết trước của tôi. Nếu chưa cài đặt máy chủ web Ubuntu, hãy cài đặt máy chủ web apache2 theo bài viết đó.

Đối với cấu hình máy chủ web HTTPS, chúng tôi cũng cần chứng chỉ SSL/TLS. Chứng chỉ SSL/TLS có thể là chứng chỉ SSL tự ký hoặc công khai. Nếu máy chủ web của bạn được sử dụng công khai, hãy mua chứng chỉ SSL/TLS từ bất kỳ nhà cung cấp CA đáng tin cậy nào và nếu máy chủ web của bạn được sử dụng trong công ty của bạn hoặc một số nhân viên, hãy sử dụng chứng chỉ tự ký. Cách tạo chứng chỉ tự ký với OpenSSL trong máy chủ Ubuntu đã được thảo luận trong bài viết trước của tôi. Vì vậy, hãy làm theo bài viết đó nếu bạn yêu cầu chứng chỉ tự ký.

Ngoài ra, đừng quên tiếp tục mở cổng 80 (đối với HTTP) và 443 (đối với HTTPS) trong quy tắc tường lửa nếu không máy chủ web sẽ không thể truy cập được.

Định cấu hình Máy chủ web Apache2 với Chứng chỉ TLS/SSL

Trước khi bắt đầu cấu hình HTTPS, chúng ta phải có chứng chỉ TLS/SSL trong tay. Nếu mua chứng chỉ TLS công khai, bạn sẽ có một tệp chứng chỉ (.crt) và một tệp khóa riêng (.key). Nếu bạn theo dõi bài viết trước của tôi về chứng chỉ tự ký, bạn sẽ có các tệp system.crt và system.key sẽ được sử dụng trong bài viết này.

Trong máy chủ web Ubuntu Apache2, bạn sẽ tìm thấy hai tệp cấu hình trong etc /apache2/sites- thư mục có sẵn . Một là tệp 000-default.conf là tệp cấu hình HTTP và một tệp khác là tệp default-ssl.conf là tệp cấu hình HTTPS. Vì vậy, chúng tôi sẽ thay đổi tệp cấu hình default-ssl.conf vì chúng tôi sẽ định cấu hình máy chủ web apache2 an toàn.

Chúng tôi sẽ thay đổi tệp chứng chỉ và vị trí tệp khóa riêng trong default-ssl.conf. Các tệp chứng chỉ thường được lưu trong thư mục etc /ssl/certs và các tệp khóa riêng được lưu trong thư mục etc /ssl/private . Vì vậy, hãy sao chép các tệp chứng chỉ và khóa riêng của bạn trong các thư mục này tương ứng, sau đó mở tệp default-ssl.conf bằng trình chỉnh sửa vim.

sayeed@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl.conf

và thay đổi vị trí tệp chứng chỉ và khóa riêng theo các dòng sau.

SSLCertificateFile /etc/ssl/certs/system.crt
SSLCertificateKeyFile /etc/ssl/private/system.key

Bây giờ hãy lưu và đóng tệp. Theo mặc định, trang web HTTP được bật trong Máy chủ web Apache2. Vì vậy, chúng tôi phải bật trang HTTPS sau khi chỉnh sửa default-ssl.conf. Đưa ra lệnh sau để kích hoạt trang web HTTPS.

sayeed@ubuntu:/etc/apache2/sites-available$ sudo a2ensite default-ssl.conf

Theo mặc định, chế độ SSL cũng không được bật trong máy chủ web Ubuntu Apache2. Vì vậy, chúng ta cũng phải kích hoạt chế độ SSL trong máy chủ web Apache2 bằng lệnh sau.

sayeed@ubuntu:/etc/apache2/sites-available$ sudo a2enmod ssl

Sau khi chạy các lệnh trên, chúng tôi phải khởi động lại máy chủ web Apache2 nếu không việc sửa đổi sẽ không được áp dụng.

sayeed@ubuntu:~$ sudo systemctl reload apache2

Máy chủ web Apache2 hiện đã sẵn sàng để truyền dữ liệu qua cổng 443 một cách an toàn. Nhập URL máy chủ web của bạn [ https://ip_address ] vào bất kỳ trình duyệt nào. Bây giờ bạn sẽ thấy nội dung web mặc định sẽ xuất hiện qua giao thức HTTPS an toàn.

Lưu ý: Nếu bạn sử dụng chứng chỉ tự ký, bạn sẽ thấy một trang cảnh báo trước khi xuất hiện trang này vì CA không được trình duyệt tin cậy. Vì vậy, hãy chấp nhận rủi ro bảo mật vì chứng chỉ do bạn tạo và không có rủi ro bảo mật nào ở đây.

Chuyển hướng HTTP sang HTTPS

Trang HTTPS ở trên sẽ chỉ xuất hiện khi chúng tôi nhập URL HTTPS trong trình duyệt. Nhưng đôi khi người dùng sẽ quên gõ HTTPS. Vì vậy, họ sẽ nhận được trang web HTTP có thể gây hại. Để khắc phục tình trạng này, chúng ta phải chuyển hướng lưu lượng HTTP sang trang HTTPS để người dùng có thể truy cập trang HTTPS mặc dù họ chỉ nhập URL mà không có HTTPS.

Để chuyển hướng HTTP sang HTTPS, hãy mở tệp cấu hình HTTP tương ứng (for this article, the configuration file is 000-default.conf ) and add the following line at the bottom within <VirtualHost> tag.

Redirect permanent / https://example.com/

Bây giờ hãy khởi động lại hoặc tải lại máy chủ web Apache2 rồi duyệt URL HTTP. Bây giờ bạn sẽ thấy rằng trang HTTP đã được chuyển hướng đến trang HTTPS.

Cách định cấu hình HTTPS trong Máy chủ web Ubuntu Apache2 và cách chuyển hướng HTTP sang HTTPS đã được thảo luận trong bài viết này. Tôi hy vọng bây giờ bạn sẽ có thể định cấu hình máy chủ web HTTPS trong Ubuntu. Tuy nhiên, nếu bạn gặp phải bất kỳ sự nhầm lẫn nào, vui lòng thảo luận trong nhận xét hoặc liên hệ với tôi từ trang Liên hệ .