Trong quá trình cài SSL tôi gặp khá nhiều trường hợp không thể yêu cầu cấp phát SSL, bằng kinh nghiệm và trong bài viết này tôi sẽ chỉ các bạn Nguyên nhân cài SSL thất bại và cách xử lý. Mời các bạn cùng theo dõi.
1. Bị giới hạn số lần Request
Mặc dù là SSL miễn phí, tuy nhiên sẽ có giớ hạn số lần Request trên tuần, bạn có thể xem thêm tại đây. Nguyên nhân bị limit là yêu cầu quá nhiều lần. Khi gặp trường hợp này bạn sẽ không thể yêu cầu cấp phát SSL nữa và phải chờ đợi một thời gian khá lâu. Vì vậy bạn hãy thay đổi một loại SSL khác như SSL trả phí hoặc ZeroSSL miễn phí
2. Domain chưa trỏ về IP máy chủ hoặc trỏ sai
Để cài được SSL thì bắt buộc tên miền của bạn phải trỏ về IP máy chủ host/vps. Nếu bạn chưa trỏ hoặc trỏ không đúng thì sẽ không cài được SSL. Mọi hệ thống khi cài thành công hoặc thất bại đề báo log, vì vậy bạn hãy chịu khó đọc và dịch các đoạn log này.
- Kiểm tra DNS online tại đây
Sau khi đã xác định được bạn hãy trỏ tên miền về IP và cài lại.
3. Domain sử dụng CloudFlare
Khi domain bạn sử dụng CloudFlare và bật Proxy tức đám mây màu vàng thì bạn sẽ không thể yêu cầu cấp phát SSL trên host/vps được. Khi sử dụng CloudFlare bạn sẽ cài SSL ở CloudFlare hoặc bạn phải tắt Proxy trên CloudFlare thì mới cài được SSL ở Hosting/VPS
4. Không truy cập vào được .well-known/acme-challenge
Có thể bạn chưa biết, khi bạn yêu cầu cấp phát chứng chỉ SSL. Hệ thống sẽ tạo một thư mục và một file vào bên trong domain/.well-known/acme-challenge
để xác thực. Khi tạo và xác thực thành công thì SSL mới được cấp phát. Khi không xác thực thành công thì SSL sẽ không được cấp phát và một số lỗi không xác thực được thường là:
- Phân quyền không đúng
- DocumentRoot sai
- Chịu tác động bởi các rewrite của .htaccess. Khi đó bạn hãy kiểm tra và thêm vào dòng màu đỏ bên dưới đoạn
RewriteEngine On
. Đoạn này sẽ ưu tiên truy cập vào.well-known\/acme-challenge
# BEGIN WordPress
RewriteEngine On
RewriteRule ^\.well-known\/acme-challenge\/ - [L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
5. Port chưa mở
Chắc hẵn mọi người đều biết Port cho HTTPS sẽ là 443. Nếu port bị đóng thì sẽ không thể sử dụng được. Lỗi này thường gặp ở VPS riêng, ở Hosting thì port này luôn ưu tiên mở.
6. IP bị chặn quốc tế
Trường hợp này thường hay gặp khi bạn sử dụng Host/VPS ở Việt Nam và vì lý do nào đó IP máy chủ bị chặn kết nối ra quốc tế và quốc tế vào. Khi đó bạn sẽ không request được SSL.
Trường hợp này bạn hãy liên hệ nhà cung cấp kiểm tra và đổi IP cho bạn nếu cần thiết
- Check host tại đây: https://check-host.net/check-http
7. Tồn tại SSL tự ký (ssl self-signed)
Một vài trường hợp trên hosting khi bạn thêm domain vào hệ thống sẽ cài vào SSL tự ký, hay còn gọi là ssl self-signed. Trường hợp này bạn hãy gở SSL tự ký ra để chạy SSL Let’s Encrypt.
Trong bài viết này tôi sử dụng cPanel và thực hiện như sau
Đăng nhập vào cPanel chọn SSL/TLS
Chọn vào Manage SSL sites
Tìm đến domain và chọn Uninstall để gở
Chúc bạn thực hiện thành công.