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