Cài đặt chứng chỉ ssl miễn phí. Hiện nay hầu hết các trang web đều đã hỗ trợ SSL (Secure Socket Layer). Nó mã hóa dữ liệu truyền đi giữa máy chủ web và trình duyệt và làm tăng tính bảo mật cho website. Ngoài ra, việc sử dụng SSL certificate (chứng chỉ SSL) là cần thiết bởi hiện tại Google đã ưu tiên xếp hạng website dựa theo giao thức https (HTTP + SSL), những website mà chỉ sử dụng giao thức http sẽ bị coi là “unsafe” (không an toàn). Để cài đặt chứng chỉ ssl miễn phí cho site trên VPS/Server ta có 2 cách:
- Sử dụng chứng chỉ của Let’s Encrypt
- Sử dụng chứng chỉ của CloudFlare
Trong bài viết này. UpForShare chia sẻ 2 cách cài đặt chứng chỉ ssl miễn phí được sử dụng phổ biến nhất trên thế giới. Minh hoạ trên VPS CentOS 7, 8, các hệ điều hành khác tương tự.
Cài đặt chứng chỉ ssl miễn phí Let’s Encrypt
Let’s Encrypt là một nhà cung cấp chứng chỉ số SSL (Certificate Authority) hoàn toàn miễn phí nhằm cung cấp chứng nhận SSL cho cộng đồng nói chung. Let’s Encrypt được tài trợ bởi nhiều công ty bao gồm Google, Facebook, Sucuri, Mozilla, Cisco, v.v… chúng ta sẽ sử dụng Certbot auto.
Cài đặt SSL miễn phí với Certbot auto
Trước tiên, bạn truy cập vào:
1 |
https://certbot.eff.org/instructions |
Tại mục: My HTTP website is running các bạn chọn loại web server và hệ điều hành tương ứng mà bạn đang sử dụng. Ví dụ ở đây tôi chạy OpenLiteSpeed trên CentOS 7 thì sẽ chọn như sau: Cuộn trang xuống dưới certbot.eff.org sẽ có hướng dẫn chi tiết các bước cài đặt: Để chuẩn bị cài đặt certbot, bạn cần quyền root và login SSH vào VPS, tất nhiên rồi, mặt khác VPS của bạn phải cài đặt sẵn EPEL (Extra Packages for Enterprise Linux) repository như bài này đã hướng dẫn. Tiếp theo, cài đặt một số thư viện bổ sung
1 2 |
yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional |
Cài đặt certbot:
1 |
yum install certbot -y |
Quá trình cài đặt thành công, bạn sử dụng lệnh sau để cài đặt chứng chỉ ssl cho website mà không làm ảnh hưởng gì tới website đang vận hành:
1 |
certbot certonly --webroot |
Ở lần đầu tiên xác minh, certbot sẽ hỏi bạn điền email để xác thực và nhận các thông báo. Sau đó certbot sẽ yêu cầu bạn nhập domain muốn cài ssl. Bạn nhập vào các domain muốn cài SSL. Ví dụ: domain-cua-ban.com và www.domain-cua-ban.com Kế tiếp, certbot yêu cầu bạn nhập đường dẫn thư mục gốc của website (webroot), bạn dán vào nhé (chính là đường dẫn thư mục đến file index). Done. Certbot sẽ auto làm hết cho bạn, đến khi xuất hiện thông báo có dạng:
1 2 3 4 5 6 7 8 9 10 |
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/domain-cua-ban.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/domain-cua-ban.com/privkey.pem Your cert will expire on 2020-03-03. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" ... |
Là bạn đã cài đặt thành công. Hãy lưu lại vị trí các file chứng chỉ /etc/letsencrypt/live/… để phục vụ cấu hình SSL trên web server. Nếu là OpenLiteSpeed thì bạn dán vị trí 2 tệp chứng chỉ đó vào đây: Cấu hình thêm SSL Protocol và Security, thiết lập Rewrite Rules để chuyển hướng www về non-www và http về https như sau:
1 2 3 4 5 6 |
# www to non-www RewriteCond %{HTTP_HOST} !^domain-cua-ban\.com$ RewriteRule (.*)$ https://domain-cua-ban.com/$1 [R=301,L] # http to HTTPS RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://domain-cua-ban.com/$1 [R,L] |
Đừng quên thay domain-cua-ban nhé 🙂 Như thế là url website của bạn đã có khoá bảo mật https Bây giờ chạy crontab cho nó tự động check và gia hạn chứng chỉ: Crontab Renew SSL của Certbot
1 2 3 4 5 |
crontab -e bấm phím i (insert) 0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew > /dev/null Esc :wq |
Tuy nhiên, nếu crontab theo hướng dẫn trên của certbot không hoạt động trên VPS/Server của bạn thì cũng đừng lo lắng. Hãy thử Crontab Renew SSL của Upforshare như dưới đây: 0 9 * * * certbot renew --post-hook "/usr/local/lsws/bin/lswsctrl restart" >> /var/log/lich-su-gia-han-certbot.log
Trong đó: 0 9 * * *
là để chạy lệnh gia hạn vào 9h sáng hàng ngày, đổi lại nếu bạn thích. Lưu ý đổi múi giờ hệ thống của máy chủ "/usr/local/lsws/bin/lswsctrl restart"
là để khởi động lại web server của bạn, ở đây là OpenLiteSpeed, nếu bạn chạy nginx hay apache… thì hãy thay thế cho phù hợp. >> /var/log/lich-su-gia-han-certbot.log
để tạo file log ghi lại lịch sử gia hạn ssl, bạn có thể bỏ qua đoạn này.
Cài đặt ssl và khắc phục vấn đề downtime khi chuyển website sử dụng SSL Let’s Encrypt
Nhận chứng chỉ Let’s Encrypt không cần trỏ tên miền Thay vì cài đặt theo tab Default, hãy chuyển sang tab Wildcard để xác thực tên miền bằng DNS Challenge (sử dụng Cloudflare, không sử dụng ip nên không sợ downtime khi trỏ domain sang ip mới, không sợ bị khoá HSTS) Thực hiện từ bước 1 đến bước 6 như hướng dẫn của certbot. Tạo file cấu hình *.ini của Cloudflare như sau:
1 2 3 4 |
dns_cloudflare_email = [email protected] ; Với [email protected] là tài khoản Cloudflare của bạn dns_cloudflare_api_key = d86d7d1f423f6c137abcxyz123 ; d86d7d1f423f6c137abcxyz123 là Cloudflare API key lấy tại đây: https://dash.cloudflare.com/profile/api-tokens |
Nên đặt tên file này bằng tên email Cloudflare luôn cho tiện quản lý, lưu tại 1 thư mục ẩn trên root: Ví dụ: /root/.cloudflare/tenemail.ini
Chmod thư mục ẩn này về 400 để đảm bảo an toàn: chmod 400 -R /root/.cloudflare/
Câu lệnh cài đặt chứng chỉ ssl miễn phí và xác thực chứng chỉ SSL tự động:
1 |
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.cloudflare/tenemail.ini -d domain.com -d www.domain.com |
Xem thêm hướng dẫn tại đây: https://certbot-dns-cloudflare.readthedocs.io/en/stable/ Cài đặt crontab gia hạn tự động tương tự như trên.
Lựa chọn thứ 2, sử dụng chứng chỉ SSL của CloudFlare
Để sử dụng chứng chỉ ssl miễn phí của CloudFlare, bạn bắt buộc phải bật đám mây vàng, proxy cho domain trên CloudFlare. Sau đó tạo chứng chỉ trong phần SSL/TSL như hình dưới: Cửa sổ Origin Certificate Installation hiện ra, bạn chọn Generate private key and CSR with Cloudflare RSA 2048. Kiểm tra lại phần List the hostnames… Certificate Validity 15 years và bấm Create.
Cloudflare sẽ cung cấp cho bạn 2 đoạn mã chứng chỉ server, bạn copy nội dung và dán vào 2 file chứng chỉ tương ứng, ví dụ:
- Nội dung trong Private Key dán vào file Domain-cua-ban.key
- Nội dung trong Origin Certificate dán vào file Domain-cua-ban.pem
Bước tiếp theo bạn dùng 2 file chứng chỉ ssl này và cài đặt lên web server bạn đang chạy giống như với Let’s Encrypt. Đã cài chứng chỉ ssl miễn phí của CloudFlare 15 năm thì bạn không cần phải nghĩ đến việc gia hạn làm gì nữa! Tốc độ và tính tương thích của chứng chỉ SSL CloudFlare có phần tốt hơn Let’s Encrypt, bạn hãy trải nghiệm và đưa ra đánh giá nhé.
Tạo Page Rules để cache file tĩnh bằng CF
Đối với các trang dùng WordPress tôi thường sử dụng 2 rule bên dưới để cache các file tĩnh dạng html, js, css, images …
-
https://upforshare.com/wp-content/cache/* Cache Level: Bypass
-
https://upforshare.com/wp-content/* Cache Level: Cache Everything
Kết quả sau khi thêm 2 rules trên sẽ được như sau:
…đang cập nhật
Nguồn: UpForShare.com tổng hợp và biên soạn.
Gần như tất cả site của mình hiện nay đề sử dụng SSL Let’s encrypt và Cloudflare rất nhanh và tiện
Đúng rồi bạn, nếu hay phải di chuyển server thì cứ SSL Cloudflare mà chiến, không phải lo gia hạn