Hướng dẫn cài đặt chứng chỉ Let’s Encrypt trên CentOS 7 (NGINX)
Đây là bài viết cuối cùng trong serie bài viết cài đặt LEMP thủ công của mình.
Bài viết ngày hôm nay mình sẽ hướng dẫn bạn cách cài đặt chứng chỉ miễn Let’s Encrypt SSL cho website.
Chúng ta cùng bắt đầu.
Bước 1: Cài đặt Cerbot Let’s Encrypt Client
Mình chọn Certbot client vì nó giúp cho việc cài đặt Let’s Encrypt trở nên dễ dàng.
Đầu tiên bạn cần cài đặt EPEL repository:
yum install epel-release
Bây giờ thì cài đặt certbot-nginx bằng câu lệnh sau:
yum install certbot-nginx
Bước 2: Thực hiện chuyển hướng www về không có www với NGINX
Trong trường hợp này mình sẽ chuyển hướng từ www về non-www.
Khi thêm domain chúng ta đã có một file cấu hình nginx ví dụ: /etc/nginx/domains/khamphaso.com.conf.
Tạo thêm một file cấu hình nginx cho domain (thay tên domain của mình bằng của bạn):
nano /etc/nginx/domains/khamphaso.com.redirect.conf
Copy và dán đoạn code này vào:
server { server_name www.example.com; return 301 $scheme://example.com$request_uri; }
Lưu lại và thoát khỏi nano.
Khởi động lại nginx: systemctl restart nginx
Bước 3: Đạt chứng chỉ
Lấy chứng chỉ và cài đặt cho domain bạn muốn:
certbot --nginx -d example.com -d www.example.com
Nếu lần đầu tiên bạn chạy nó sẽ hỏi địa chỉ email của bạn. Tiếp đó nó hỏi bạn muốn nhận email hay không chọn không.
Cuối cùng nó hỏi cách cấu hình HTTPS bạn chọn 2 cho an toàn.
Lúc này website của bạn đã cài đặt chứng chỉ Let’s Encrypt thành công.
Chứng chỉ Let’s Encrypt chỉ có hiệu lực trong 90 ngày. Do vậy bạn cần tạo cronjob tự động gia hạn:
export VISUAL=nano; crontab -e
Thêm dòng này vào:
15 3 * * * /usr/bin/certbot renew --quiet
Nghĩa là: Chạy lệnh gia hạn vào lúc 3h15 sáng. Nếu chứng chỉ chưa hết hạn thì nó không làm gì cả.
Bước 4: Cập nhật các tham số Diffe-Hellman
Nếu lúc này bạn test website bằng SSL Labs Server Test bạn sẽ chỉ đạt điểm B.
Để giải quyết vấn đề này, bạn chạy lệnh sau:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Sau khi thành công, bạn mở file cấu hình nginx ra:
nano /etc/nginx/domains/khamphaso.com.conf
Paste dòng sau vào khối server:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Mặc định phần cấu hình CertBot không cấu hình http2 bạn sửa lại:
Bước 5: Kích hoạt HTTP/2 cho NGINX trên CentOS
Hiện tại NGINX đang có issue sau:
Nó được biên dịch với OpenSSL từ bản 1.0.2 trở về trước. Do vậy các trình duyệt phổ biến vẫn sử dụng giao thức cũ HTTP/1.1. Bạn xem chi tiết vấn đề trong bài viết này.
Bạn có thể check chi tiết hơn câu lệnh: nginx -V. sẽ thấy phiên bản OpenSSL.
Cách giải quyết duy nhất bây giờ là compile lại source với Open SSL phiên bản mới. Có như vậy website của bạn mới chạy qua giao thức HTTP/2.
Cách làm cụ thể bạn xem ở bài này. (từ đoạn 14 trở đi bạn không cần làm vì chúng ta đã cài đặt nginx trước đó rồi).
Như vậy bài viết này bạn đã cài đặt chứng chỉ Let’s Encrypt trên CentOS cho NGINX.
Nhìn chung hiện tại hệ điều hành CentOS đang có bản OpenSSL cũ gây ra vấn đề HTTP/2.
Tìm kiếm