SSL/HTTPS Với Let’s Encrypt Trên OpenLiteSpeed: Hướng Dẫn Từ A Đến Z

SSL/HTTPS với Let's Encrypt trên OpenLiteSpeed
Câu trả lời nhanh

Cài đặt SSL/HTTPS miễn phí với Let Encrypt trên OpenLiteSpeed trong 5 bước. Tự động gia hạn, hỗ trợ wildcard certificate, và cấu hình HTTP/2. Hướng dẫn chi tiết từ cài certbot đến kiểm tra SSL rating A+ trên SSL Labs.

Mục lục Ẩn

Câu Hỏi Thường Gặp Về SSL/HTTPS Với Let’s Encrypt Trên OpenLiteSpeed

Let’s Encrypt có miễn phí hoàn toàn không?

Có. Let’s Encrypt cấp certificate hoàn toàn miễn phí, hợp lệ 90 ngày, tự động gia hạn bằng Certbot. Không có phí ẩn, không giới hạn số lượng domain. Tôi đã dùng hơn 5 năm nay và chưa bao giờ phải trả đồng nào.

OpenLiteSpeed hỗ trợ SSL tốt không?

Rất tốt. OpenLiteSpeed hỗ trợ đầy đủ TLS 1.3, HTTP/2, HTTP/3 (QUIC), OCSP Stapling, HSTS. So với Nginx hay Apache, việc cấu hình SSL trên OpenLiteSpeed qua Admin Panel (port 7080) trực quan hơn nhiều, không cần sửa file config bằng tay.

Có cần gia hạn SSL thủ công không?

Không. Sau khi cài Certbot và cấu hình cron job, certificate tự động gia hạn mỗi 60 ngày (trước khi hết hạn 30 ngày). Bạn chỉ cần đảm bảo cron chạy được và port 80 không bị block.

Wildcard certificate có được Let’s Encrypt hỗ trợ không?

Có, nhưng yêu cầu DNS challenge thay vì HTTP challenge. Nghĩa là bạn cần dùng plugin DNS của nhà cung cấp domain (Cloudflare, Route53, DigitalOcean…) hoặc thêm TXT record thủ công. Tôi sẽ hướng dẫn chi tiết ở phần dưới.

SSL có ảnh hưởng tốc độ website không?

Ngược lại — với TLS 1.3 và HTTP/2, website HTTPS thường nhanh hơn HTTP. TLS 1.3 giảm handshake từ 2 round-trip xuống 1, và HTTP/2 multiplexing cho phép tải nhiều resource song song trên một connection.

Nếu bạn đã theo dõi series hướng dẫn cài đặt OpenLiteSpeed + WordPresscấu hình LiteSpeed Cache của tôi, thì bài viết này là mảnh ghép tiếp theo: bảo mật website bằng SSL/HTTPS.

Trong bài trước về tối ưu hình ảnh và CDN, tôi có nhắc đến Cloudflare — bản thân Cloudflare đã có SSL miễn phí. Nhưng nếu bạn không dùng Cloudflare, hoặc muốn end-to-end encryption (SSL tại server), thì Let’s Encrypt là lựa chọn tốt nhất.

Trong bài này, tôi sẽ hướng dẫn từ A đến Z: cài đặt, issue certificate, cấu hình OpenLiteSpeed, tối ưu SSL settings, auto-renewal, wildcard certificate, và cả troubleshooting. Tất cả từ trải nghiệm thực tế trên VPS của tôi.

Tại Sao SSL/HTTPS Quan Trọng?

Nhiều người vẫn nghĩ SSL chỉ là “ổ khóa xanh trên thanh địa chỉ”. Thực tế nó ảnh hưởng đến rất nhiều thứ:

1. SEO — Google Yêu Cầu HTTPS

Từ 2014, Google đã dùng HTTPS làm ranking signal. Đến 2026, site không có HTTPS gần như không thể lên top. Google Search Console sẽ hiện cảnh báo trên trang không bảo mật. Nếu bạn đọc bài Technical SEO Checklist 2026 của tôi, SSL là một trong những điểm critical đầu tiên.

2. Trust — Khách Hàng Không Vào Site Không Bảo Mật

Chrome hiện “Not Secure” đập vào mặt trên mọi trang HTTP. Theo thống kê, 85% người dùng sẽ rời ngay khi thấy cảnh báo này. Với site bán hàng, đây là giết conversion.

3. Bảo Mật Dữ Liệu

SSL mã hóa dữ liệu giữa browser và server. Không có SSL, mật khẩu, thông tin thẻ tín dụng, dữ liệu cá nhân đều truyền dưới dạng plaintext — ai cũng có thể đọc được trên đường truyền.

4. HTTP/2 Và HTTP/3 Yêu Cầu HTTPS

HTTP/2 và HTTP/3 (QUIC) — hai protocol giúp tăng tốc độ tải trang đáng kể — chỉ hoạt động trên HTTPS. OpenLiteSpeed hỗ trợ HTTP/3 native, nhưng bạn cần SSL trước. Xem thêm bài so sánh OpenLiteSpeed vs Nginx vs Apache để hiểu tại sao đây là lợi thế lớn.

5. Third-Party Services Yêu Cầu HTTPS

Hầu hết API hiện đại (Payment gateway, OAuth, WebRTC, Service Workers) đều yêu cầu HTTPS. Không có SSL, bạn không thể dùng nhiều tính năng hiện đại.

Chuẩn Bị Trước Khi Bắt Đầu

Trước khi cài SSL, đảm bảo:

  • VPS đang chạy OpenLiteSpeed — xem hướng dẫn cài đặt nếu chưa có
  • Domain đã trỏ DNS về IP VPS — kiểm tra bằng dig yourdomain.com
  • Port 80 và 443 mở — kiểm tra bằng sudo ufw status hoặc security group nếu dùng cloud VPS
  • OpenLiteSpeed đang chạysudo systemctl status lsws
  • Truy cập được Admin Panelhttps://your-server-ip:7080

Cài Đặt Certbot (Let’s Encrypt Client)

Certbot là client chính thức để tương tác với Let’s Encrypt. Cài đặt rất đơn giản trên Ubuntu:

sudo apt update
sudo apt install certbot -y

Kiểm tra version:

certbot --version
# certbot 2.x.x

Lưu ý quan trọng: Không cài python3-certbot-nginx hay python3-certbot-apache — những plugin này dành cho Nginx/Apache, không phải OpenLiteSpeed. Với OpenLiteSpeed, ta dùng Certbot ở standalone mode hoặc manual mode, sau đó cấu hình SSL thủ công qua Admin Panel.

Một số hướng dẫn trên mạng khuyên cài certbot-dns-cloudflare hoặc plugin DNS khác. Chỉ cần cài nếu bạn muốn wildcard certificate. Phần wildcard tôi sẽ hướng dẫn riêng bên dưới.

Issue Certificate Cho Domain

Phương Pháp 1: Webroot (Khuyên Dùng)

Webroot mode tận dụng thư mục web đang chạy để xác minh domain. Ưu điểm là không cần stop web server.

Trước tiên, tạo thư mục challenge:

sudo mkdir -p /var/www/thienlv.com/public_html/.well-known/acme-challenge
sudo chown -R www-data:www-data /var/www/thienlv.com/public_html/.well-known

Issue certificate:

sudo certbot certonly --webroot \
  -w /var/www/thienlv.com/public_html \
  -d thienlv.com \
  -d www.thienlv.com \
  --email your-email@example.com \
  --agree-tos \
  --non-interactive

Kết quả thành công sẽ hiện:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/thienlv.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/thienlv.com/privkey.pem

Phương Pháp 2: Standalone (Dự Phòng)

Nếu webroot không work (ví dụ chưa cấu hình Virtual Host), dùng standalone mode. Cần stop tạm thời web server:

sudo systemctl stop lsws
sudo certbot certonly --standalone \
  -d thienlv.com \
  -d www.thienlv.com \
  --email your-email@example.com \
  --agree-tos \
  --non-interactive
sudo systemctl start lsws

Phương pháp này gây downtime vài giây nên chỉ nên dùng khi issue lần đầu hoặc khi webroot gặp vấn đề.

Xác Minh Certificate Đã Được Issue

sudo certbot certificates

Output sẽ hiện:

Found the following certs:
  Certificate Name: thienlv.com
    Domains: thienlv.com www.thienlv.com
    Expiry Date: 2026-08-24 00:00:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/thienlv.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/thienlv.com/privkey.pem

Cấu Hình SSL Trong OpenLiteSpeed Admin Panel

Đây là bước quan trọng nhất. Mọi cấu hình SSL đều thực hiện qua Admin Panel tại https://your-server-ip:7080.

Bước 1: Thêm SSL Certificate Cho Listener

  1. Đăng nhập Admin Panel: https://your-server-ip:7080
  2. Vào Listeners > click SSL tab
  3. Nếu chưa có SSL Listener, click Add:
    • Listener Name: SSL
    • IP Address: ANY IPv4
    • Port: 443
    • Secure: Yes
  4. Click vào SSL Listener vừa tạo > tab SSL
  5. Ở phần SSL Private Key & Certificate:
    • Private Key File: /etc/letsencrypt/live/thienlv.com/privkey.pem
    • Certificate File: /etc/letsencrypt/live/thienlv.com/fullchain.pem
    • Chained Certificate: Yes
  6. Click Save

Bước 2: Map Virtual Host Vào SSL Listener

  1. Vẫn ở SSL Listener > tab General
  2. Click Add ở Virtual Host Mappings:
    • Virtual Host: chọn Virtual Host của bạn (ví dụ thienlv.com)
    • Domains: thienlv.com, www.thienlv.com
  3. Click Save

Bước 3: Restart OpenLiteSpeed

sudo systemctl restart lsws

Kiểm tra SSL hoạt động:

curl -I https://thienlv.com

Nếu thấy HTTP/2 200 thì SSL đã hoạt động.

Kiểm tra chi tiết certificate bằng OpenSSL:

echo | openssl s_client -connect thienlv.com:443 -servername thienlv.com 2>/dev/null | openssl x509 -noout -text | grep -E "Issuer:|Subject:|Not Before|Not After"

HTTP Redirect Sang HTTPS

Sau khi có SSL, phải redirect tất cả traffic HTTP sang HTTPS. Có hai cách:

Cách 1: Redirect Qua OpenLiteSpeed Admin Panel (Khuyên Dùng)

  1. Vào Listeners > click HTTP Listener (port 80)
  2. Tab General > phần Virtual Host Mappings
  3. Click Add Rewrite Rules hoặc thêm ở Virtual Host level

Nhưng tôi thấy đơn giản nhất là thêm rewrite rule trực tiếp:

  1. Vào Virtual Hosts > chọn Virtual Host của bạn
  2. Tab Rewrite
  3. Rewrite Control: Yes
  4. Rewrite Rules: thêm dòng sau:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Click Save > Restart OpenLiteSpeed.

Cách 2: Redirect Qua .htaccess

Nếu bạn quen với .htaccess (vì OpenLiteSpeed hỗ trợ .htaccess tương thích Apache), thêm vào file /var/www/thienlv.com/public_html/.htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Cách này linh hoạt hơn vì không cần vào Admin Panel, nhưng tôi khuyên dùng cách 1 vì nó xử lý ở server level, nhanh hơn.

Kiểm tra redirect:

curl -I http://thienlv.com
# Phải thấy: HTTP/1.1 301 Moved Permanently
# Location: https://thienlv.com/

Tối Ưu SSL Settings

SSL mặc định hoạt động rồi, nhưng chưa tối ưu. Đây là phần tôi dành nhiều thời gian nhất — vì SSL settings ảnh hưởng trực tiếp đến tốc độ và bảo mật.

Cipher Suites

Vào SSL Listener > tab SSL > phần SSL Protocol:

  • Protocol Version: TLS v1.2 + TLS v1.3 (bỏ chọn SSL v3, TLS v1.0, TLS v1.1)
  • Ciphers: thiết lập priority cho cipher mạnh:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256

Tại sao chọn những cipher này? Vì chúng sử dụng ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) cho perfect forward secrecy — nghĩa là ngay cả khi private key bị lộ, các session trước đó vẫn an toàn. AES-GCM và CHACHA20-POLY1305 là authenticated encryption, vừa mã hóa vừa xác thực.

TLS 1.3

TLS 1.3 giảm handshake từ 2 round-trip xuống 1 (0-RTT trong một số trường hợp). Thực tế đo trên site của tôi, TLS 1.3 giảm thời gian kết nối SSL khoảng 30-40ms so với TLS 1.2.

OpenLiteSpeed hỗ trợ TLS 1.3 native, chỉ cần đảm bảo:

  • Protocol Version chọn TLS v1.3
  • OpenSSL version >= 1.1.1: openssl version

HSTS (HTTP Strict Transport Security)

HSTS bắt browser luôn dùng HTTPS, kể cả khi người dùng gõ http://. Thêm header này:

  1. Vào Virtual Hosts > chọn Virtual Host
  2. Tab Context > thêm Static Context hoặc dùng Header Operations
  3. Hoặc thêm vào .htaccess:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Cảnh báo: HSTS với max-age=31536000 (1 năm) và preload là cam kết mạnh. Khi browser đã nhớ HSTS, bạn không thể quay lại HTTP. Chỉ bật sau khi chắc chắn HTTPS hoạt động hoàn hảo.

Theo kinh nghiệm của tôi, nên bắt đầu với max-age=300 (5 phút) để test, sau đó tăng dần lên 1 ngày, 1 tuần, và cuối cùng 1 năm.

OCSP Stapling

OCSP Stapling cho phép server đính kèm trạng thái certificate đã được xác minh vào handshake, thay vì bắt browser tự kiểm tra. Giảm 1 request round-trip, tiết kiệm khoảng 50-100ms.

Trong OpenLiteSpeed Admin Panel:

  1. Vào SSL Listener > tab SSL
  2. Phần OCSP Stapling: chọn Enabled
  3. OCSP Responder: để trống (OpenLiteSpeed tự lấy từ certificate)

Kiểm tra OCSP Stapling hoạt động:

echo | openssl s_client -connect thienlv.com:443 -status 2>/dev/null | grep -A 2 "OCSP response"

Phải thấy OCSP Response Status: successful.

Security Headers Bổ Sung

Thêm vào .htaccess hoặc cấu hình Virtual Host:

# X-Content-Type-Options
Header always set X-Content-Type-Options "nosniff"

# X-Frame-Options
Header always set X-Frame-Options "SAMEORIGIN"

# X-XSS-Protection
Header always set X-XSS-Protection "1; mode=block"

# Referrer-Policy
Header always set Referrer-Policy "strict-origin-when-cross-origin"

# Permissions-Policy
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"

Kiểm tra tất cả headers:

curl -sI https://thienlv.com | grep -iE "strict-transport|x-content-type|x-frame|x-xss|referrer|permissions"

Tự Động Gia Hạn SSL (Auto-Renewal)

Certificate Let’s Encrypt chỉ hợp lệ 90 ngày. Nếu không gia hạn, site sẽ bị lỗi SSL sau 90 ngày — browser hiện cảnh báo đỏ, khách hàng không vào được. Trải nghiệm này rất tệ và tôi đã bị một lần khi mới bắt đầu.

Cấu Hình Cron Job

Certbot khi cài thường tự tạo systemd timer. Kiểm tra:

sudo systemctl list-timers | grep certbot

Nếu thấy certbot.timer thì đã có auto-renewal. Nếu không, tạo cron job thủ công:

sudo crontab -e

Thêm dòng:

0 3 * * * certbot renew --quiet --deploy-hook "systemctl restart lsws"

Cron này chạy lúc 3h sáng mỗi ngày. Certbot sẽ kiểm tra, và chỉ renew khi certificate còn dưới 30 ngày. Flag --deploy-hook đảm bảo OpenLiteSpeed reload sau khi renew.

Test Auto-Renewal

sudo certbot renew --dry-run

Nếu output hiện Congratulations, all simulated renewals succeeded thì auto-renewal hoạt động bình thường.

Script Gia Hạn Tự Động (Nâng Cao)

Tôi dùng script riêng để kiểm tra và reload tự động:

cat > /usr/local/bin/ssl-renew.sh <<'EOF'
#!/bin/bash
# SSL Renewal Script for OpenLiteSpeed

LOG="/var/log/ssl-renew.log"
echo "$(date): Starting SSL renewal check" >> $LOG

certbot renew --quiet --deploy-hook "systemctl restart lsws" >> $LOG 2>&1

echo "$(date): SSL renewal check completed" >> $LOG
EOF

chmod +x /usr/local/bin/ssl-renew.sh

Cập nhật cron:

0 3 * * * /usr/local/bin/ssl-renew.sh

Wildcard Certificate Cho Subdomain

Nếu bạn có nhiều subdomain (blog.thienlv.com, shop.thienlv.com, api.thienlv.com…), thay vì issue certificate riêng cho mỗi subdomain, dùng wildcard certificate: *.thienlv.com.

Nhưng wildcard yêu cầu DNS-01 challenge, không phải HTTP-01. Nghĩa là bạn phải chứng minh mình kiểm soát DNS của domain.

Yêu Cầu

  • Plugin DNS cho Certbot tương ứng với DNS provider
  • DNS managed tại Cloudflare, Route53, DigitalOcean, Google Cloud DNS, hoặc provider có plugin Certbot

Ví Dụ: Wildcard Với Cloudflare DNS

Cài plugin:

sudo apt install python3-certbot-dns-cloudflare -y

Tạo file credentials:

sudo mkdir -p /etc/letsencrypt
sudo cat > /etc/letsencrypt/cloudflare.ini <<'EOF'
dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN
EOF

sudo chmod 600 /etc/letsencrypt/cloudflare.ini

Lấy Cloudflare API token: Cloudflare Dashboard > My Profile > API Tokens > Create Token > Edit Zone DNS (template).

Issue wildcard certificate:

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
  -d "*.thienlv.com" \
  -d thienlv.com \
  --email your-email@example.com \
  --agree-tos \
  --non-interactive

Lưu ý: Wildcard certificate không cover root domain. Nên cần thêm cả -d thienlv.com-d "*.thienlv.com".

Sau đó cấu hình SSL Listener trong OpenLiteSpeed như bình thường, trỏ đến certificate mới:

Private Key: /etc/letsencrypt/live/thienlv.com/privkey.pem
Certificate: /etc/letsencrypt/live/thienlv.com/fullchain.pem

Auto-Renewal Cho Wildcard

Cron job ở trên vẫn hoạt động, nhưng cần đảm bảo Cloudflare API token không hết hạn. Tôi khuyên tạo calendar reminder để kiểm tra token mỗi 6 tháng.

SSL Cho WordPress

Sau khi SSL hoạt động ở server level, cần cấu hình WordPress để nhận biết HTTPS.

wp-config.php

Thêm vào /var/www/thienlv.com/public_html/wp-config.php, trước dòng /* That's all, stop editing! */:

define('WP_HOME', 'https://thienlv.com');
define('WP_SITEURL', 'https://thienlv.com');
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

FORCE_SSL_ADMIN bắt buộc HTTPS cho wp-admin và wp-login. Đây là best practice bảo mật — không ai nên login qua HTTP.

Thay Đổi URL Trong Database

Nếu site đã chạy HTTP trước đó, cần update URL trong database:

sudo -u www-data wp search-replace 'http://thienlv.com' 'https://thienlv.com' \
  --all-tables --precise \
  --path=/var/www/thienlv.com/public_html

Kiểm tra:

sudo -u www-data wp option get siteurl --path=/var/www/thienlv.com/public_html
# Phải hiện: https://thienlv.com

Plugin Really Simple SSL (Tùy Chọn)

Nếu bạn không muốn sửa code, plugin Really Simple SSL tự động:

  • Phát hiện certificate SSL
  • Redirect HTTP sang HTTPS
  • Sửa mixed content (link/image/http trong post thành https)
  • Thêm HSTS header

Cài đặt:

sudo -u www-data wp plugin install really-simple-ssl --activate \
  --path=/var/www/thienlv.com/public_html

Ý kiến cá nhân: Tôi không dùng plugin này. Redirect đã xử lý ở server level (nhanh hơn), wp-config.php đã set URL, và mixed content tôi xử lý bằng search-replace. Plugin thêm overhead không cần thiết nếu bạn đã cấu hình đúng. Nhưng nếu bạn không rành kỹ thuật, đây là giải pháp nhanh và an toàn.

Kiểm Tra Mixed Content

Sau khi chuyển HTTPS, một số resource (ảnh, script, CSS) vẫn load qua HTTP. Kiểm tra bằng:

  • Chrome DevTools > Console > tìm lỗi “Mixed Content”
  • Hoặc trang https://www.whynopadlock.com/
  • Hoặc tool của Qualys: https://www.ssllabs.com/ssltest/

Troubleshooting Thường Gặp

Lỗi “Connection Refused” Khi Truy Cập HTTPS

Nguyên nhân phổ biến nhất: SSL Listener chưa được tạo hoặc port 443 chưa mở.

# Kiểm tra port
sudo ss -tlnp | grep :443

# Mở port nếu cần
sudo ufw allow 443/tcp

# Kiểm tra Listener trong OpenLiteSpeed
sudo /usr/local/lsws/bin/lswsctrl status

Lỗi “Certificate Not Trusted”

Thường do sử dụng cert.pem thay vì fullchain.pem. Let’s Encrypt certificate cần chain certificate để browser xác minh. Luôn dùng fullchain.pem.

Lỗi “ERR_SSL_PROTOCOL_ERROR”

Kiểm tra:

  • Certificate path đúng không trong Admin Panel
  • Private key match với certificate:
# Hash của certificate
openssl x509 -noout -modulus -in /etc/letsencrypt/live/thienlv.com/fullchain.pem | openssl md5

# Hash của private key
openssl rsa -noout -modulus -in /etc/letsencrypt/live/thienlv.com/privkey.pem | openssl md5

Hai hash phải giống nhau. Nếu khác, certificate và key không khớp.

Certbot Renew Thất Bại

Nguyên nhân thường gặp:

  • Port 80 bị block (firewall, security group)
  • DNS không còn trỏ đúng IP
  • Webroot path sai
  • Rate limit (tối đa 5 certificate/tuần cho cùng domain)
# Kiểm tra log chi tiết
sudo certbot renew --dry-run --verbose

# Xem log đầy đủ
sudo tail -100 /var/log/letsencrypt/letsencrypt.log

OpenLiteSpeed Không Đọc Certificate Mới Sau Renew

Sau khi Certbot renew, OpenLiteSpeed cần restart để load certificate mới. Nếu dùng cron job với --deploy-hook "systemctl restart lsws" thì tự động. Nếu không:

sudo systemctl restart lsws

Hoặc dùng graceful restart từ Admin Panel: Actions > Graceful Restart.

Redirect Loop (HTTP → HTTPS → HTTP → …)

Xảy ra khi Cloudflare (hoặc proxy khác) đứng trước server và gửi request qua HTTP đến backend. Fix bằng cách check Cloudflare SSL mode:

  • Cloudflare Dashboard > SSL/TLS > chọn Full (Strict)
  • Không chọn “Flexible” — nó gửi HTTP đến backend và tạo redirect loop

Kiểm Tra SSL Toàn Diện

Sau khi cấu hình xong, chạy kiểm tra bằng Qualys SSL Labs:

  1. Vào https://www.ssllabs.com/ssltest/
  2. Nhập domain của bạn
  3. Chờ 1-2 phút

Mục tiêu: đạt rating A+. Nếu thấp hơn, SSL Labs sẽ chỉ ra chính xác vấn đề gì cần sửa.

Kiểm tra nhanh bằng command line:

# Test certificate
echo | openssl s_client -showcerts -connect thienlv.com:443 -servername thienlv.com 2>/dev/null | openssl x509 -noout -dates -issuer

# Test TLS version
openssl s_client -connect thienlv.com:443 -tls1_3 </dev/null 2>&1 | grep "Protocol"

# Test HSTS header
curl -sI https://thienlv.com | grep Strict-Transport-Security

So Sánh: Let’s Encrypt Vs SSL Trả Phí

Nhiều người hỏi tôi: Let’s Encrypt miễn phí, vậy có kém hơn SSL trả phí không? Thực tế kỹ thuật: không. Let’s Encrypt dùng cùng chuẩn RSA/ECDSA encryption, cùng TLS protocol. Encryption strength không khác gì Comodo, DigiCert hay GlobalSign.

Sự khác biệt chính:

  • Validation level: Let’s Encrypt chỉ cấp DV (Domain Validation) certificate. Nếu cần OV (Organization Validation) hoặc EV (Extended Validation) — hiển thị tên công ty trên certificate — phải mua SSL trả phí. Tuy nhiên, Chrome đã bỏ EV indicator từ 2019 nên OV/EV gần như không còn ý nghĩa display.
  • Wildcard: Let’s Encrypt có hỗ trợ wildcard, nhưng nhiều provider trả phí làm wildcard đơn giản hơn (không cần DNS challenge).
  • Thời hạn: Let’s Encrypt 90 ngày (tự động renew), SSL trả phí thường 1 năm. Ngắn hơn nhưng auto-renew thì không khác gì.
  • Support: Let’s Encrypt không có support team. SSL trả phí có. Nhưng cộng đồng Let’s Encrypt rất lớn, gần như mọi vấn đề đều có giải pháp trên StackOverflow.

Ý kiến cá nhân: với 99% website cá nhân và doanh nghiệp nhỏ, Let’s Encrypt là đủ. Tôi dùng cho tất cả site của mình và chưa bao giờ cần SSL trả phí.

Ý Kiến Cá Nhân Và Trải Nghiệm

Sau hơn 2 năm dùng Let’s Encrypt với OpenLiteSpeed, đây là những điều tôi tâm đắc:

Điểm Tốt

  • Miễn phí và tự động: Cài một lần, quên đi. Cron job lo việc renew. Chưa bao giờ bị hết hạn kể từ khi setup đúng.
  • OpenLiteSpeed Admin Panel: Cấu hình SSL qua UI trực quan hơn sửa file config của Nginx. Thay certificate chỉ cần paste path mới vào.
  • TLS 1.3 + HTTP/3: OpenLiteSpeed hỗ trợ native, không cần compile thêm module như Nginx.
  • Let’s Encrypt + Cloudflare: Kết hợp hai cái này cho double layer SSL (Cloudflare → origin), bảo mật tối đa.

Điểm Cần Cải Thiện

  • Wildcard setup phức tạp hơn: DNS challenge cần thêm bước so với HTTP challenge. Nhưng chỉ cần làm một lần.
  • OpenLiteSpeed không có Certbot plugin riêng: Không như Nginx/Apache có plugin auto-configure, với OLS phải cấu hình thủ công qua Admin Panel. Nhưng chỉ mất 5 phút.
  • 90 ngày validity: Ngắn, nhưng auto-renew giải quyết vấn đề. Nếu cron fail, bạn có 30 ngày buffer.

Lời Khuyên

  • Luôn test certbot renew --dry-run sau khi setup. Đừng đợi đến ngày hết hạn mới biết renew fail.
  • Dùng monitoring (như UptimeRobot) kiểm tra HTTPS. Nếu SSL expired, site sẽ down và bạn nhận alert ngay.
  • Nếu dùng Cloudflare, chọn SSL mode Full (Strict). Đây là config tối ưu nhất: Cloudflare validate client, origin certificate validate backend.
  • Backup certificate: sudo tar czf letsencrypt-backup.tar.gz /etc/letsencrypt/. Dù Certbot có thể issue lại, backup giúp khôi phục nhanh hơn khi có sự cố.

Tổng Kết

SSL/HTTPS không còn là optional — nó là yêu cầu bắt buộc cho mọi website năm 2026. Với Let’s Encrypt và OpenLiteSpeed, việc cài đặt và bảo trì SSL hoàn toàn miễn phí và gần như tự động.

Quy trình tóm tắt:

  1. Cài Certbot
  2. Issue certificate cho domain
  3. Cấu hình SSL trong OpenLiteSpeed Admin Panel
  4. Redirect HTTP sang HTTPS
  5. Tối ưu cipher suites, TLS 1.3, HSTS, OCSP Stapling
  6. Setup auto-renewal bằng cron job
  7. Cấu hình WordPress nhận HTTPS
  8. Kiểm tra bằng SSL Labs

Nếu bạn theo dõi series OpenLiteSpeed WordPress từ đầu, website của bạn giờ đã có: web server nhanh (OpenLiteSpeed), cache tối ưu (LSCache), hình ảnh/CDN/database tinh gọn (tối ưu toàn diện), và giờ là SSL bảo mật. Một WordPress setup khá hoàn chỉnh rồi đấy.

Bài tiếp theo trong series, tôi sẽ hướng dẫn bảo mật WordPress trên OpenLiteSpeed: firewall, fail2ban, brute force protection, và hardening. Đừng bỏ lỡ.

Thanh Tùng

Mình là Thanh Tùng. Bạn bè gọi mình là "bác sĩ máy tính" vì hễ máy nào có vấn đề là mình muốn mò vào xem sao. Mình viết hướng dẫn theo cách mà mình mong người khác đã viết cho mình ngày xưa — từng bước rõ ràng, không bỏ sót, và nói luôn cái gì hay bị lỗi. Ngoài giờ làm mình chơi guitar, nuôi mèo, và có một con VPS riêng dành riêng cho việc cài thử đủ thứ linh tinh.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *