NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
16/05/2023
Lượt xem

Hướng dẫn cách tạo chứng chỉ SSL trên Apache cho CentOS 7

16/05/2023
17 phút đọc
Lượt xem

Đánh giá

5/5 - (55 bình chọn)

TLS (transport layer security) và SSL (secure sockets layer) là các giao thức web sử dụng để bọc lưu lượng thông tin trong một lớp bảo vệ được mã hóa. Khi sử dụng công nghệ này, server có thể gửi lưu lượng thông tin đến client một cách an toàn mà không bị chặn bởi bên thứ ba. Hệ thống chứng chỉ cũng giúp người dùng xác minh danh tính của các trang web mà họ đang kết nối. Trong bài viết hướng dẫn tạo chứng chỉ SSL trên Apache cho CentOS 7 này, bạn sẽ được học cách thiết lập một chứng chỉ SSL self-signed sử dụng với web server Apache trên server CentOS 7.

Lưu ý

Chứng chỉ self-signed sẽ mã hóa thông tin giao tiếp giữa server và bất kỳ client nào. Tuy nhiên, người dùng không thể sử dụng chứng chỉ để tự động xác minh danh tính server mình. Do đó, khi truy cập vào trang web người dùng sẽ thấy lỗi bảo mật.

Lưu ý
Lưu ý

Do giới hạn này, chứng chỉ self-signed không phù hợp phục vụ rộng rãi. Chứng chỉ thường được sử dụng để kiểm tra hoặc bảo mật các dịch vụ không quan trọng sử dụng bởi một người dùng hoặc một nhóm người dùng nhỏ.

Yêu cầu để tạo chứng chỉ SSL trên Apache cho CentOS 7

Trước khi bắt đầu các bước trong bài viết, bạn cần thực hiện:

  • Bạn cần có quyền truy cập vào một server CentOS 7 với tài khoản người dùng non-root có quyền sudo.
  • Cài đặt web server Apache trên CentOS 7. (Bài viết hướng dẫn tại đây)

Sau khi cài đặt hoàn tất, bạn đăng nhập vào tài khoản người dùng non-root qua SSH và tiếp tục bước 1 dưới đây.

Bước 1: Cài đặt mod_ssl

Để cài đặt chứng chỉ self-signed, trước tiên bạn cần cài đặt mod_ssl trên server. mod_ssl là một module Apache cung cấp hỗ trợ mã hóa SSL. Bạn có thể cài đặt mod_ssl bằng lệnh yum:

sudo yum install mod_ssl

Module sẽ tự động bật trong quá trình cài đặt. Apache sẽ bắt đầu sử dụng chứng chỉ SSL sau khi được khởi động lại. Bạn không cần làm thêm gì khác để sử dụng mod_ssl.

Bước 2: Tạo chứng chỉ mới

Sau khi Apache đã sẵn sàng mã hóa, bạn có thể tạo một chứng chỉ SSL mới. TLS/SSL hoạt động bằng cách sử dụng kết hợp chứng chỉ công khai và khóa riêng tư. Khóa SSL được giữ bí mật trên server, được sử dụng để mã hóa nội dung gửi cho các client. Chứng chỉ SSL được chia sẻ công khai với người yêu cầu nội dung. Chứng chỉ còn sử dụng để giải mã nội dung được ký bằng khóa SSL liên quan.

Thư mục /etc/ssl/certs được sử dụng để chứa chứng chỉ công khai đã tồn tại trên server. Bạn cũng cần tạo một thư mục /etc/ssl/private để chứa file khóa riêng tư. Tính bảo mật của khóa này là rất quan trọng. Vì vậy, việc khóa các quyền truy cập để ngăn truy cập trái phép là rất cần thiết:

sudo mkdir /etc/ssl/private sudo chmod 700 /etc/ssl/private

Bây giờ, bạn có thể tạo một cặp khóa và chứng chỉ self-signed với OpenSSL chỉ bằng một lệnh duy nhất:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Bạn sẽ được hỏi một loạt các câu hỏi khi thực hiện chạy lệnh này. Trước khi thực hiện, bạn cần tìm hiểu các thành phần trong lệnh:

  • openssl: Đây là công cụ command line cơ bản để tạo và quản lý chứng chỉ OpenSSL, khóa và các file khác.
  • req: Lệnh con này chỉ định rằng bạn muốn sử dụng certificate signing request (CSR) X.509. “X.509” là một tiêu chuẩn cơ sở khóa công khai mà SSL và TLS tuân thủ theo để quản lý khóa và chứng chỉ. Bạn muốn tạo một chứng chỉ X.509 mới nên bạn sử dụng lệnh con này.
  • -x509: Tiếp tục sửa đổi lệnh con trước đó bằng cách cho tiện ích biết bạn muốn tạo chứng chỉ self-signed thay vì tạo certificate signing request như thường lệ.
  • -nodes: Cho OpenSSL biết bỏ qua tùy chọn bảo vệ chứng chỉ bằng mật khẩu. Bạn cần Apache có thể đọc file mà không cần sự can thiệp của người dùng khi server khởi động lại. Mật khẩu sẽ ngăn cản điều này xảy ra vì bạn phải nhập mật khẩu sau mỗi lần khởi động lại.
  • -days 365: Tùy chọn này xác định thời hạn có hiệu lực của chứng chỉ. Trong trường hợp này là 1 năm.
  • -newkey rsa:2048 : Chỉ định bạn muốn tạo ra một chứng chỉ mới và một khóa mới cùng một lúc. Bạn chưa tạo khóa được yêu cầu để ký chứng chỉ trong bước trước đó. Vì vậy bạn cần tạo khóa cùng với chứng chỉ. Phần rsa:2048 chỉ định tạo ra một khóa RSA có độ dài 2048 bit.
  • -keyout: Dòng này cho OpenSSL biết nơi đặt file khóa riêng tư được tạo ra.
  • -out: Dòng này cho OpenSSL biết nơi đặt chứng chỉ được tạo ra.

Như đã trình bày ở trên, những tùy chọn này sẽ tạo ra cả file khóa và chứng chỉ. Bạn sẽ được yêu cầu trả lời một vài câu hỏi về server của bạn để nhúng chính xác thông tin phù hợp vào chứng chỉ.

Lưu ý: Nhập tên miền hoặc địa chỉ IP công khai của server của khi được yêu cầu nhập Common Name rất quan trọng (ví dụ: FQDN server hoặc tên của bạn). Giá trị nhập phải khớp với cách người dùng truy cập server của bạn.

Toàn bộ các câu hỏi sẽ như sau:

Output Country Name (2 letter code) [XX]:US State or Province Name (full name) []:Example Locality Name (eg, city) [Default City]:Example  Organization Name (eg, company) [Default Company Ltd]:Example Inc Organizational Unit Name (eg, section) []:Example Dept Common Name (eg, your name or your server's hostname) []:your_domain_or_ip Email Address []:webmaster@example.com

Cả hai file bạn đã tạo sẽ được đặt trong các thư mục con của thư mục /etc/ssl.

Khi sử dụng OpenSSL, bạn cũng nên tạo một nhóm Diffie-Hellman sử dụng trong việc đàm phán Forward Secrecy tuyệt đối với các client.

Bạn có thể làm tạo nhóm Diffie-Hellman bằng cách gõ:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Có thể mất vài phút để tạo nhóm. Khi hoàn tất, bạn sẽ có một nhóm DH mạnh tại /etc/ssl/certs/dhparam.pem mà bạn có thể sử dụng trong cấu hình của mình.

Như đã trình bày ở phần yêu cầu, để tạo chứng chỉ SSL trên Apache cho CentOS 7, đầu tiên bạn cần phải có một server CentOS 7. Nếu bạn chưa có server, bạn có thể tham khảo các gói dịch vụ VPS của Vietnix để tạo một server CentOS 7.

Vietnix hiện đang cung cấp nhiều gói dịch vụ VPS với cấu hình đa dạng và giá thành hợp lý, bao gồm VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS NVMe. Một số ưu điểm nổi bật của VPS Vietnix đó là:

  • Tốc độ cao và ổn định.
  • Hỗ trợ backup tự động hàng tuần.
  • Hỗ trợ nhiều hệ điều hành, trong đó có CentOS 7.
  • Kích hoạt nhanh chóng chỉ trong 5 phút và giao diện quản trị đơn giản.
  • Tặng bản quyền theme & plugin WordPress trị giá đến 26.000.000 VND.
  • Giá chỉ từ 89.000 VND/tháng, thuê chu kỳ dài thì giá càng rẻ.

Nếu bạn muốn biết thêm chi tiết hoặc cần được tư vấn, hãy liên hệ ngay Vietnix.

Bước 3: Thiết lập chứng chỉ

Bây giờ bạn đã có tất cả các thành phần cần thiết cho giao diện hoàn chỉnh. Tiếp theo là thiết lập các server ảo để hiển thị chứng chỉ mới.

Mở một file mới trong thư mục /etc/httpd/conf.d:

sudo vi /etc/httpd/conf.d/your_domain_or_ip.conf

Dán vào đó đoạn cấu hình VirtualHost sau đây:

<VirtualHost *:443>     ServerName your_domain_or_ip     DocumentRoot /var/www/html     SSLEngine on     SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt     SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key </VirtualHost>

Đảm bảo cập nhật dòng Server Name phù hợp với cách bạn xác định địa chỉ server của mình. Đó có thể là một hostname, tên miền đầy đủ hoặc địa chỉ IP. Server Name bạn chọn phải phù hợp với Common Name mà bạn đã chọn khi tạo chứng chỉ.

Cài đặt thông số SSL an toàn

Tiếp theo, bạn sẽ thêm một số tùy chọn SSL bổ sung để tăng tính bảo mật cho trang web của mình. Các tùy chọn bạn sử dụng là các đề xuất từ Cipherlist.eu. Trang web này được thiết kế để cung cấp các thiết lập mã hóa dễ sử dụng cho phần mềm phổ biến.

Lưu ý: Các thiết lập mặc định được đề xuất trên Cipherlist.eu cung cấp bảo mật mạnh mẽ. Nhưng điều này có thể dẫn đến sự tương thích kém với các client cũ hơn. Nếu bạn cần hỗ trợ các khách hàng cũ, bạn có thể sử dụng một danh sách tương thích thay thế bằng cách nhấp vào liên kết có nhãn “Yes, give me a ciphersuite that works with legacy/old software.” . Danh sách tương thích có thể được sử dụng thay vì các đề xuất mặc định trong cấu hình. Sự lựa chọn của bạn sẽ phụ thuộc vào những gì bạn cần hỗ trợ.

Có một vài phần của cấu hình mà có thể bạn muốn sửa đổi. Bạn có thể thêm server DNS ưa thích của mình cho yêu cầu upstream vào chỉ thị resolver. Trong bài viết này, bạn đã sử dụng của Google nhưng bạn có thể thay đổi sang DNS khác.

Bạn nên tìm hiểu thêm về HTTP Strict Transport Security hay HSTS và cụ thể về chức năng “preload”. Preloading HSTS cung cấp độ bảo mật tăng cường nhưng cũng có thể mang tới hậu quả lớn nếu bật sai cách. Trong bài viết này, bạn sẽ không preload các thiết lập nhưng có thể sửa đổi nếu chắc chắn rằng bạn hiểu rõ các ảnh hưởng của preload.

Các thay đổi khác mà bạn sẽ thực hiện là remove +TLSv1.3 và comment out chỉ thị SSLSessionTicketsSSLOpenSSLConfCmd. Hãy dán các thiết lập từ trang web sau khi kết thúc khối VirtualHost:

. . . </VirtualHost> . . .  # Begin copied text # from https://cipherli.st/  SSLCipherSuite EECDH+AESGCM:EDH+AESGCM # Requires Apache 2.4.36 & OpenSSL 1.1.1 SSLProtocol -all +TLSv1.2 # SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 # Older versions # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On # Disable preloading HSTS for now.  You can use the commented out header line that includes # the "preload" directive if you understand the implications. #Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains" # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 # SSLSessionTickets Off

Khi bạn hoàn thành các thay đổi này, bạn có thể lưu và đóng file.

Tạo chuyển hướng từ HTTP sang HTTPS (Không bắt buộc)

Server sẽ cung cấp cả lưu lượng HTTP không mã hóa và HTTPS được mã hóa. Để có sự an toàn hơn, đa số trường hợp được khuyến nghị chuyển hướng HTTP sang HTTPS tự động. Nếu bạn không muốn hoặc không cần chức năng này, bạn có thể bỏ qua phần này.

Để chuyển hướng tất cả lưu lượng để mã hóa SSL, bạn hãy tạo và mở một file có đuôi .conf trong thư mục /etc/httpd/conf.d:

sudo vi /etc/httpd/conf.d/non-ssl.conf

Bên trong file, tạo một khối VirtualHost để phù hợp với các yêu cầu trên cổng 80. Sử dụng chỉ thị Server Name để khớp lại tên miền hoặc địa chỉ IP của bạn. Sau đó, sử dụng Redirect để khớp yêu cầu và gửi chúng đến SSL VirtualHost. Hãy chắc chắn có dấu gạch chéo cuối cùng:

<VirtualHost *:80>        ServerName your_domain_or_ip         Redirect "/" "https://your_domain_or_ip/" </VirtualHost>

Lưu và đóng file này khi bạn hoàn thành.

Bước 4: Áp dụng thay đổi cấu hình Apache

Bây giờ, bạn đã tạo chứng chỉ SSL và cấu hình web server để áp dụng chúng vào trang web của mình. Để áp dụng tất cả các thay đổi này và bắt đầu sử dụng mã hóa SSL, bạn có thể khởi động lại server Apache để tải lại cấu hình và các module.

Đầu tiên, kiểm tra file cấu hình của bạn có lỗi cú pháp hay không bằng cách nhập:

sudo apachectl configtest

Output kết thúc bằng Syntax OK thì bạn có thể tiếp tục mà không gặp vấn đề gì. Nếu output của bạn không có phần này, hãy kiểm tra cú pháp của các file của bạn và thử lại:

Output . . . Syntax OK

Khởi động lại server Apache để áp dụng các thay đổi bằng cách nhập:

sudo systemctl restart httpd.service

Tiếp theo, hãy đảm bảo cổng 80 và 443 được mở trong tường lửa. Nếu bạn không chạy tường lửa, bạn có thể bỏ qua phần này.

Nếu bạn đang chạy tường lửa firewalld, bạn có thể mở các cổng này bằng cách nhập:

sudo firewall-cmd --add-service=http sudo firewall-cmd --add-service=https sudo firewall-cmd --runtime-to-permanent

Nếu bạn đang chạy tường lửa iptables, các lệnh bạn cần chạy phụ thuộc rất nhiều vào bộ quy tắc hiện tại của bạn. Đối với một bộ quy tắc cơ bản, bạn có thể thêm truy cập HTTP và HTTPS bằng cách nhập:

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Bước 5: Kiểm tra mã hóa

Mở trình duyệt web và nhập https:// theo sau là tên server’s domain hoặc địa chỉ IP server của bạn vào thanh địa chỉ:

https://your_domain_or_ip

Bởi vì chứng chỉ mà bạn tạo ra không được ký bởi một trong các cơ quan chứng chỉ đáng tin cậy của trình duyệt nên bạn có thể sẽ thấy một cảnh báo giống như sau:

Cảnh báo self-signed
Cảnh báo self-signed

Điều này là bình thường. Bạn chỉ cần quan tâm đến khía cạnh mã hóa của chứng chỉ của bạn. Nhấp vào “ADVANCED” và sau đó nhấp vào liên kết được cung cấp để tiếp tục truy cập vào server:

Nhấn vào ADVANCED và tiếp tục truy cập
Nhấn vào ADVANCED và tiếp tục truy cập

Bạn sẽ được đưa đến trang web của bạn. Nếu nhìn vào thanh địa chỉ, bạn sẽ thấy một số dấu hiệu về bảo mật một phần. Đó có thể là một khóa với “x” bên trên hoặc một hình tam giác với một dấu chấm than. Chứng chỉ không thể được xác nhận và vẫn đang mã hóa kết nối của bạn. 

Nếu bạn đã cấu hình Apache để chuyển hướng các yêu cầu HTTP sang HTTPS, bạn cũng có thể kiểm tra xem các chức năng chuyển hướng chính xác chưa: 

http://your_domain_or_ip

Nếu kết quả dẫn đến cùng một biểu tượng thì có nghĩa là chuyển hướng của bạn hoạt động chính xác.

Nếu bạn cần thuê dịch vụ VPS để triển khai các dự án, Vietnix chính là địa chỉ bạn có thể yên tâm lựa chọn. Sau 10 năm hoạt động, Vietnix hiện đang là nhà cung cấp VPS tốc độ cao uy tín hàng đầu tại Việt Nam và được hơn 50.000 khách hàng trong và ngoài nước sử dụng dịch vụ. Trong đó có những đơn vị nổi tiếng như iVIVU.com, Vietnamwork, KINGFOOD, UBGroup, GTV,…

Vietnix không chỉ được đánh giá cao về chất lượng sản phẩm mà còn luôn chú trọng đến dịch vụ hỗ trợ khách hàng. Vì vậy, đến 97% khách hàng sử dụng VPS tại Vietnix đều đánh giá 5 sao và thường giới thiệu cho bạn bè, người quen.

Nhờ việc không ngừng nâng cao chất lượng sản phẩm và mang lại sự hài lòng cho khách hàng, Vietnix đã được vinh danh với giải thưởng Thương hiệu Việt Nam xuất sắc năm 2022.

Liên hệ ngay với Vietnix theo những thông tin sau đây để được hỗ trợ tư vấn giải pháp VPS phù hợp với bạn.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Qua bài viết hướng dẫn tạo chứng chỉ SSL trên Apache cho CentOS 7 này, bạn đã biết cách cấu hình server Apache để xử lý các yêu cầu HTTP và HTTPS. Bạn có thể giao tiếp với client một cách an toàn và tránh được việc bên ngoài có thể đọc được lưu lượng. Nếu bạn định sử dụng SSL cho website, bạn nên mua chứng chỉ SSL từ Vietnix để tránh những cảnh báo mỗi khi client truy cập. Cảm ơn bạn đã theo dõi và chúc bạn thực hiện thành công. 

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG