Cài đặt Let's Encrypt SSL trên CentOS 8 với Nginx và sử dụng ACME

Trong thế giới số ngày nay, việc bảo mật mạng là một phần quan trọng không thể thiếu khi triển khai các dự án trực tuyến. Trong bối cảnh này, bảo vệ máy chủ web của bạn trở nên hết sức quan trọng để đảm bảo an toàn thông tin và tương tác của người dùng. Trong bài viết này, chúng ta sẽ đàm phán về cách bảo mật máy chủ Nginx trên hệ điều hành CentOS 7 bằng cách sử dụng chứng chỉ SSL từ Let’s Encrypt ACME. Đây là một quy trình chi tiết từ cài đặt phần mềm đến cấu hình Nginx, giúp bạn đạt được một môi trường web an toàn và tin cậy.

Các bước cài đặt SSL Let'ss Encrypt ACME trên Nginx CentOS 8

Bước 1 - Cài đặt phần mềm cần thiết

Cài đặt các gói git, wget, curl và bc bằng lệnh yum:

sudo yum install git wget curl bc

Bước 2 - Cài đặt client acme.sh Let’s Encrypt

Sao chép repo:

cd /tmp/
git clone https://github.com/Neilpang/acme.sh.git

Cài đặt client acme.sh lên hệ thống của bạn bằng lệnh sau:

cd acme.sh/
sudo -i ## be root user ##
./acme.sh --install

Sau khi cài đặt, bạn phải đóng cửa sổ terminal hiện tại và mở lại để đặt tên gọi vào hiệu lực hoặc đơn giản là gõ lệnh nguồn sau:

source ~/.bashrc

Xác nhận cài đặt bằng cách in ra số phiên bản:

acme.sh --version
https://github.com/Neilpang/acme.sh
v2.8.4

Bước 3 - Cấu hình cơ bản cho máy chủ http của Nginx

Tạo một cấu hình mới cho tên miền example.com (hãy thay thế example.com bằng tên miền thực tế của bạn) như sau:

sudo vi /etc/nginx/conf.d/example.com.conf

Thêm mã sau:

server {
    listen 80;
    server_name example.com www.example.com;
    root /usr/share/nginx/html;
    index index.html;
}

Lưu và đóng tệp. Kiểm tra cấu hình và làm tươi máy chủ Nginx như sau:

sudo nginx -t
sudo systemctl reload nginx

Bước 4 - Tạo tệp dhparams.pem

Chạy lệnh openssl nhưng tạo một thư mục mới bằng lệnh mkdir:

# mkdir -pv /etc/nginx/ssl/example.com/
# cd /etc/nginx/ssl/example.com/
# openssl dhparam -out dhparams.pem -dsaparam 4096

Bước 5 - Đạt được chứng chỉ cho tên miền

Phát chứng chỉ cho tên miền của bạn:

sudo acme.sh --issue -d example.com -k 2048 --nginx
## for two domains ##
sudo acme.sh --issue -d example.com -d www.example.com -k 2048 --nginx
## get certs for three domains ##
sudo acme.sh --issue -d example.com -d www.example.com -k 2048 --nginx
## let us get cert for example.com domain only ##
sudo acme.sh --issue -d example.com -k 4096 --nginx

Bước 6 - Cấu hình Nginx

Bạn vừa đạt được thành công một Chứng chỉ SSL từ Let’s Encrypt cho máy chủ CentOS 8 Linux của bạn. Đến lúc cấu hình nó. Cập nhật cấu hình ssl như sau:

sudo vi /etc/nginx/conf.d/example.com.ssl.conf

Thêm cấu hình sau:

 server {
     listen 80;
     listen [::]:80;
     access_log  /var/log/nginx/http_example.com_access.log;
     error_log   /var/log/nginx/http_example.com_error.log;
     server_name example.com;
     root        /usr/share/nginx/html;
     #
     # redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
     #
     return 301 https://$host$request_uri;
 }
 
 server {
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     server_name example.com;
     root /usr/share/nginx/html;
 # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate 
ssl_certificate  /etc/nginx/ssl/example.com/example.com.cer; 
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key; 
ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions 
ssl_session_tickets off; 
ssl_dhparam /etc/nginx/ssl/example.com/dhparams.pem; 
ssl_protocols TLSv1.2 TLSv1.3;
# make sure the below ssl_ciphers is all one line #
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; 
ssl_prefer_server_ciphers off; 
 
add_header Strict-Transport-Security "max-age=63072000" always; 
ssl_stapling on; 
ssl_stapling_verify on; 
 
resolver 8.8.8.8; 
}

Lưu và đóng tệp trong trình soạn thảo vi/vim.

Bước 7 - Cài đặt chứng chỉ

Cài đặt chứng chỉ đã đạt được lên máy chủ Nginx:

acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.cer \
--reloadcmd "systemctl reload nginx"

Đảm bảo rằng cổng đã được mở bằng cách sử dụng lệnh ss hoặc lệnh netstat:

Sử dụng lệnh ss:

ss -tunlp | grep 443

Hoặc sử dụng lệnh netstat:

netstat -tuln | grep 443

Lệnh này sẽ hiển thị các kết nối đang lắng nghe trên cổng 443. Điều này đảm bảo rằng Nginx có thể chấp nhận kết nối trên cổng HTTPS mà bạn đã cấu hình. Nếu cổng không mở, bạn có thể cần kiểm tra và cập nhật cài đặt tường lửa của mình.

Bước 8 - Cấu hình tường lửa

Bạn cần mở cổng 443 (HTTPS) trên máy chủ để khách hàng có thể kết nối sử dụng Firewalld. Cập nhật các quy tắc như sau:

sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload

Bước 9 - Kiểm tra

Mở trình duyệt web và nhập tên miền của bạn, chẳng hạn như:

https://example.com

Kiểm tra nó với trang kiểm tra SSLlabs

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Bước 10 – Các lệnh acme.sh

Liệt kê tất cả các chứng chỉ:

acme.sh --list

Đầu ra ví dụ:

Main_Domain            KeyLength  SAN_Domains  Created                       Renew
example.com  "4096"     no           Mon Dec 30 16:57:10 UTC 2019  Fri Feb 28 16:57:10 UTC 2020

Gia hạn chứng chỉ cho tên miền:

acme.sh --renew -d example.com

Lưu ý rằng một công việc cron sẽ cố gắng gia hạn chứng chỉ tự động cho bạn. Để xem công việc chạy:

crontab -l

Đầu ra ví dụ:

8 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

Nâng cấp client acme.sh:

acme.sh --upgrade

Để có sự trợ giúp:

acme.sh --help

Trên hết, việc bảo mật máy chủ Nginx trên CentOS 7 thông qua SSL Let’s Encrypt ACME không chỉ là một biện pháp phòng ngừa mà còn là một nhu cầu thiết yếu trong quản lý hệ thống và dữ liệu trực tuyến. Bằng cách này, bạn không chỉ đảm bảo rằng thông tin của bạn được mã hóa và an toàn mỗi khi di chuyển trên mạng mà còn tăng cường tính xác thực của trang web của mình. Hãy áp dụng các bước hướng dẫn trong bài viết để đạt được một cấu hình bảo mật vững chắc và hiệu quả trên máy chủ Nginx của bạn.

Đến với Chứng chỉ SSL của KDATA. Với chúng tôi, an ninh mạng không còn là nỗi lo. Bảo vệ thông tin trực tuyến của bạn bằng cách mua Chứng chỉ SSL tại KDATA, giúp giảm thiểu rủi ro và tăng cường sự an toàn cho website của bạn. Hãy đầu tư vào sự an toàn ngay hôm nay với KDATA!

https://kdata.vn/ssl-certificate

👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất