23 Lê Văn Lương, Thanh Xuân, Hà Nội

Hướng dẫn cài đặt chứng chỉ Let’s Encrypt trên CentOS 7 (NGINX)

Chuyên mục: Centos/ SSL/ VPS

Đâ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;

 

Hướng dẫn cài đặt chứng chỉ Let’s Encrypt trên CentOS 7 (NGINX)

 

Mặc định phần cấu hình CertBot không cấu hình http2 bạn sửa lại:

 

Hướng dẫn cài đặt chứng chỉ Let’s Encrypt trên CentOS 7 (NGINX)

 

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