Bài viết này hướng dẫn chi tiết cách cài đặt chứng chỉ SSL miễn phí từ ZeroSSL cho website chạy trên Nginx mà không dùng control panel. Toàn bộ quy trình sẽ được trình bày từng bước, từ tạo chứng chỉ, xác thực qua file (HTTP-01), đến cấu hình vhost để bật HTTPS, giúp tăng cường bảo mật và cải thiện SEO.
Yêu cầu trước khi thực hiện
- Hệ điều hành: Máy chủ sử dụng hệ điều hành nền tảng Linux (ví dụ: Ubuntu, Debian, CentOS,…).
- Quyền truy cập: Cần có quyền quản trị cao nhất (root) hoặc quyền thực thi lệnh với sudo.
- Trạng thái tên miền: Tên miền không bị khóa ở cấp độ nhà đăng ký (Registrar Lock), đảm bảo có thể thực hiện các thay đổi cần thiết.
- Cấu hình DNS: Tên miền (domain) hoặc tên miền phụ (subdomain) cần cài đặt SSL phải được trỏ bản ghi A (A record) chính xác về địa chỉ IP của máy chủ.
- Môi trường máy chủ: Máy chủ được cài đặt thủ công, không sử dụng bất kỳ control panel nào, ví dụ: aapanel, CyberPanel, DirectAdmin. Web server Nginx đã được cài đặt và đang hoạt động.
- Kết nối mạng: Địa chỉ IP của máy chủ phải có khả năng truy cập công khai từ Internet, không bị tường lửa hoặc nhà cung cấp dịch vụ chặn các kết nối từ quốc tế.
Lưu ý quan trọng
Bài viết này sẽ thực hiện các bước hướng dẫn dựa trên một môi trường cấu hình cụ thể để bạn đọc dễ dàng hình dung. Khi thực hiện theo, bạn cần thay thế các giá trị mẫu bằng thông tin thực tế của máy chủ và tên miền của bạn.
- Hệ điều hành: Hướng dẫn được thực hiện trên Ubuntu 20.04. Các lệnh có thể tương tự trên các phiên bản Ubuntu/Debian khác.
- Tên miền: Vietnix sử dụng subdomain example.vietnix.xyz làm ví dụ. Bạn hãy thay thế example.vietnix.xyz bằng tên miền hoặc subdomain của bạn trong tất cả các lệnh và tệp cấu hình.
- Phương thức xác thực: Phương pháp được sử dụng để xác thực chứng chỉ SSL là xác thực qua tệp (File authentication), phù hợp khi bạn có quyền truy cập vào thư mục gốc của website.
- Các đường dẫn tệp:
- Đường dẫn chứa tệp cấu hình virtual host của Nginx:
/etc/nginx/sites-enabled/ - Đường dẫn chứa mã nguồn website (document root):
/var/www/example.vietnix.xyz/public - Đường dẫn đề xuất để lưu trữ tệp chứng chỉ SSL:
/etc/nginx/ssl
- Đường dẫn chứa tệp cấu hình virtual host của Nginx:
Hãy đảm bảo bạn điều chỉnh các đường dẫn và tên miền này cho phù hợp với thiết lập của mình để tránh xảy ra lỗi.
8 bước cài đặt ZeroSSL free trên Nginx
Bước 1: Thực hiện Get Free SSL
Bước 2: Nhập thông tin khởi tạo
Bước 3: Tạo chứng chỉ SSL miễn phí
Bước 4: Chọn phương thức xác thực SSL
Bước 6: Thực hiện xác thực ở ZeroSSL
Bước 7: Cấu hình SSL trên Nginx
Bước 8: Kiểm tra website và tình trạng SSL
Bước 1: Thực hiện Get Free SSL
Đầu tiên bạn truy cập https://zerossl.com chọn Get Free SSL.

Bước 2: Nhập thông tin khởi tạo
Ở bước này, bạn cần cung cấp các thông tin cần thiết để đăng ký tài khoản và khởi tạo chứng chỉ SSL với ZeroSSL, bao gồm:
- Account mail: Bạn không bắt buộc phải sử dụng email chính. Trường thông tin này được ZeroSSL sử dụng để quản lý các chứng chỉ SSL. Email này chỉ trở nên quan trọng nếu bạn chọn phương thức xác thực qua email hoặc khi đăng ký các gói dịch vụ trả phí của ZeroSSL.
- Password: Đây là mật khẩu dùng để đăng ký tài khoản với ZeroSSL. Mật khẩu bắt buộc phải có độ dài tối thiểu 8 ký tự, bao gồm chữ in hoa, số và ký tự đặc biệt. Mật khẩu này cũng sẽ được sử dụng để truy cập tài khoản ZeroSSL của bạn, đặc biệt khi nâng cấp lên các gói trả phí.
- Country: Chọn Việt Nam.
Lưu ý
Nếu máy chủ của bạn đặt tại quốc gia khác, hãy chọn quốc gia tương ứng.

Bước 3: Tạo chứng chỉ SSL miễn phí
Tiếp theo bạn chọn New Certificate để tạo bộ SSL key (Account ZeroSSL free tạo được tối đa 3 SSL miễn phí.)


Sau đó bạn chọn loại chứng chỉ SSL 90 ngày và nhấn Next Step để đến bước tiếp theo.

Bạn chọn Next Step để bỏ qua bướcAdd-Ons vì các chức năng tại Add-Ons khi bật bạn phải trả phí. Đối với mục CSR & Contact bạn hãy để mặc định và bấm Next Step.


Trong trường hợp bạn muốn sử dụng CSR (Certificate Signing Request) với thông tin tùy chỉnh, vui lòng tắt tùy chọn tạo tự động: Auto-Generate CSR.

Lúc này, bạn cần điền đầy đủ các thông tin được yêu cầu, sau đó nhấn Next Step để tiếp tục.
Tại mục Encryption Algorithm (Thuật toán mã hoá), bạn nên giữ nguyên giá trị mặc định là 2048, sau đó nhấn Next Step. Tiếp theo, hãy kiểm tra lại thông tin gói dịch vụ (plan) và nhấn Next Step để tiếp tục.


Bước 4: Chọn phương thức xác thực SSL
Tại bước này bạn chọn phương thức xác thực là File upload (File authen).


Bước 5: Upload tệp xác thực lên vps/sv Nginx / item
Kiểm tra sự tồn tại của thư mục /.well-known/pki-validation/ trong thư mục gốc của source code.

Nếu thư mục trên không tồn tại, hãy tạo mới bằng lệnh sau (thực thi tại thư mục gốc của mã nguồn):
mkdir -p .well-known/pki-validation
Sau đó bạn thực hiện upload file xác thực: /var/www/example.vietnix.xyz/public/.well-known/pki-validation. Sau khi upload hoàn tất, bạn sẽ truy cập ở đường dẫn xác thực mà tệp xác thực yêu cầu thành công.

Bước 6: Thực hiện xác thực ở ZeroSSL
Tại bước này tiếp tục thực hiện Next Step để tiến hành xác thực.

Lúc này, bạn tiến hành gửi yêu cầu xác thực bằng cách chọn “Verify Domain” như hình minh họa dưới đây.

Khi đã hoàn tất việc xác thực SSL, ZeroSSL sẽ tạo bộ SSL free, quá trình thường sẽ diễn ra trong 5-10 phút, bạn cần đợi trong thời gian này.

Khi bộ SSL free được tạo thành công, hệ thống ZeroSSL sẽ gửi file Download để bạn tải về sử dụng. Lúc này bạn có thể đóng cửa sổ trình duyệt này và thao tác cấu hình Nginx trên VPS.

Bước 7: Cấu hình SSL trên nginx
Tải bộ chứng chỉ SSL miễn phí bao gồm các tệp certificate.crt, private.key, và ca_bundle.crt đã tải về từ ZeroSSL lên VPS hoặc máy chủ chứa website.
- Đổi tên tệp: Để thuận tiện cho việc quản lý và phân biệt với các chứng chỉ khác, bạn nên đổi tên các tệp theo định dạng
subdomain.crt,subdomain.key, vàsubdomain.ca. - Tạo tệp PEM: Tạo một tệp hợp nhất có định dạng .pem ví dụ: subdomain.pem bằng cách nối nội dung của tệp
subdomain.crtvàsubdomain.catheo đúng thứ tự.
Bạn có thể tạo tệp .pem trên máy chủ bằng hai lệnh sau (thực thi theo đúng thứ tự):
cat /etc/nginx/ssl/example.vietnix.xyz.crt>/etc/nginx/ssl/example.vietnix.xyz.pemcat /etc/nginx/ssl/example.vietnix.xyz.ca >> /etc/nginx/ssl/example.vietnix.xyz.pem
Ngoài ra, bạn cũng có thể thực hiện thao tác này trên máy tính cá nhân bằng cách tạo một tệp tin mới, sau đó sao chép (copy) và dán (paste) lần lượt toàn bộ nội dung của tệp certificate.crt và ca_bundle.crt vào tệp mới đó.


Tạo tệp cấu hình Virtual Host cho SSL: example.vietnix.xyz-ssl.conf
Sau đây là nội dung của một tệp cấu hình mẫu. Lưu ý rằng bạn cần điều chỉnh các chỉ thị trong tệp để phù hợp với thiết lập Nginx cụ thể của mình:
root@example:/etc/nginx/sites-enabled# cat example.vietnix.xyz-ssl.conf
server {
listen 14.225.206.105:443 ssl;
server_name example.vietnix.xyz www.example.vietnix.xyz;
root /var/www/example.vietnix.xyz/public;
index index.php index.html index.htm;
access_log /var/log/nginx/example.vietnix.xyz.access.log;
error_log /var/log/nginx/example.vietnix.xyz.error.log;
ssl_certificate /etc/nginx/ssl/example.vietnix.xyz.pem;
ssl_certificate_key /etc/nginx/ssl/example.vietnix.xyz.key;
# Điều hướng request tĩnh & fallback sang index.php (phù hợp cho nhiều framework)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Xử lý PHP qua PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# CHỈNH LẠI socket CHO ĐÚNG PHIÊN BẢN PHP-FPM CỦA BẠN:
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# Nếu dùng TCP thay vì socket (ít gặp trên Ubuntu):
# fastcgi_pass 127.0.0.1:9000;
}
# Bảo vệ file ẩn (.git, .env, …)
location ~ /\.(?!well-known).* {
deny all;
}
}
Kiểm tra cú pháp cấu hình Nginx, sau đó tải lại (reload) dịch vụ để áp dụng các thay đổi.

Bước 8: Kiểm tra website và tình trạng SSL
Sau khi hoàn tất cài đặt, bạn cần tiến hành kiểm tra để đảm bảo chứng chỉ SSL hoạt động chính xác. Hãy truy cập website của bạn bằng giao thức HTTPS (ví dụ: https://example.vietnix.xyz). Một biểu tượng ổ khóa bảo mật phải xuất hiện trên thanh địa chỉ của trình duyệt, cho thấy kết nối đã được mã hóa thành công.
Sử dụng công cụ kiểm tra SSL trực tuyến: Truy cập vào địa chỉ https://www.sslshopper.com/ssl-checker.html. Nhập tên miền của bạn (ví dụ: example.vietnix.xyz) vào ô tương ứng và nhấn nút Check SSL.
Quá trình cài đặt được xem là thành công nếu kết quả trả về cho thấy tất cả các thông số của chứng chỉ SSL đều hợp lệ và khớp với thông tin đã cấu hình.


Khi cả hai phương pháp xác minh trên (kiểm tra trên trình duyệt và bằng công cụ trực tuyến) đều cho kết quả tích cực, điều đó khẳng định quá trình cài đặt chứng chỉ SSL từ nhà cung cấp ZeroSSL của bạn đã hoàn tất thành công.
Một số lỗi thường gặp và cách xử lý nhanh chóng
| Lỗi | Nguyên nhân | Cách khắc phục |
| Không truy cập được file challenge | Port 80 bị chặn hoặc chặn quốc tế | Mở port 80 trong firewall: ufw allow 80 và liên hệ bộ phận kỹ thuật nhờ bỏ chặn quốc tế. |
| Xác thực thất bại | File challenge sai đường dẫn | Đảm bảo file nằm đúng tại /.well-known/pki-validation |
| Nginx báo lỗi syntax | Sai cấu hình Vhost | Chạy nginx -t để kiểm tra lỗi, sửa file .conf |
| HTTPS không hoạt động | Chưa reload Nginx | Chạy systemctl reload nginx |
| SSL không hiển thị ổ khóa | Mixed content (HTTP assets) | Chuyển tất cả tài nguyên (CSS, JS, hình ảnh) sang HTTPS |
Chỉ với 8 bước, bạn đã cài đặt thành công ZeroSSL trên Nginx, đảm bảo website chạy HTTPS an toàn, tăng độ tin cậy với người dùng và cải thiện SEO. Phương thức File Authentication giúp đơn giản hóa quá trình, phù hợp cho server đơn lẻ. Hãy kiểm tra chứng chỉ định kỳ và gia hạn trước 90 ngày để duy trì bảo mật. Trong quá trình thao tác nếu còn vấn đề nào thắc mắc bạn có thể liên hệ Vietnix để được hỗ trợ nhanh chóng.
VIETNIX – DỊCH VỤ HOSTING, VPS TỐC ĐỘ CAO, ỔN ĐỊNH, BẢO MẬT
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
- Điện thoại: 1800 1093
- Email liên hệ: sales@vietnix.com.vn
- Website: https://vietnix.vn/

