Cài đặt và cấu hình Nginx để hỗ trợ HTTPS sử dụng chứng chỉ SSL đáng tin cậy.
1. Cài đặt Nginx với Mô-đun SSL
Truy cập tài liệu chính thức của Nginx để biết thêm thông tin về cách cấu hình: Hướng dẫn cài đặt Nginx
sudo yum -y install openssl openssl-devel # Mô-đun http_ssl cần openssl
./configure \
--sbin-path=/usr/local/nginx/nginxbinary \
--conf-path=/usr/local/nginx/nginxconfig.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=../pcre-8.40 \
--with-zlib=../zlib-1.2.11
make
sudo make install
2. Cấu hình Nginx cho HTTPS
Tham khảo hướng dẫn chi tiết tại đây: Hướng dẫn cấu hình HTTPS trên Nginx
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate yourdomain.crt;
ssl_certificate_key yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5:!RC4;
...
}
3. Tạo Chứng Chỉ SSL Bản Địa
Dưới đây là script tạo chứng chỉ tự ký:
#!/bin/bash
# Script tạo chứng chỉ tự ký
read -p "Nhập tên miền [yourdomain.com]: " DOMAIN
echo "Tạo khóa máy chủ..."
openssl genrsa -des3 -out $DOMAIN.key 2048
echo "Tạo yêu cầu chứng chỉ máy chủ..."
SUBJECT="/C=VN/ST=Hanoi/L=CauGiay/O=MyCompany/OU=IT/CN=$DOMAIN"
openssl req -new -subj "$SUBJECT" -key $DOMAIN.key -out $DOMAIN.csr
echo "Loại bỏ mật khẩu..."
mv $DOMAIN.key $DOMAIN.original.key
openssl rsa -in $DOMAIN.original.key -out $DOMAIN.key
echo "Ký chứng chỉ SSL..."
openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
echo "Lưu ý:"
echo "Sao chép $DOMAIN.crt đến /etc/nginx/ssl/$DOMAIN.crt"
echo "Sao chép $DOMAIN.key đến /etc/nginx/ssl/$DOMAIN.key"
echo "Thêm cấu hình trong nginx:"
echo "server {"
echo " ..."
echo " listen 443 ssl;"
echo " ssl_certificate /etc/nginx/ssl/$DOMAIN.crt;"
echo " ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
echo "}"
Các tệp được tạo ra gồm có:
- yourdomain.crt: Chứng chỉ tự ký
- yourdomain.csr: Yêu cầu chứng chỉ
- yourdomain.key: Khóa không có mật khẩu
- yourdomain.original.key: Khóa có mật khẩu
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
}