Hướng dẫn cài đặt chứng chỉ SSL Let's Encrypt cho VPS

Hướng dẫn chi tiết các bước cài đặt chứng chỉ SSL Let's Encrypt cho VPS cực đơn giản và dễ thực hiện

1. Cài đặt chứng chỉ Let’s Encrypt SSL

Clone mã nguồn Let’s Encrypt về thư mục /opt/letsencrypt. Bước này giống nhau với cả CentOs 6 và 7.

# Install Git
yum -y install git

# Clone Let's Encrypt repository
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  • Cập nhật mã nguồn Let's Encrypt
Thỉnh thoảng bạn nên cập nhật mã nguồn Let’s Encrypt từ Github để có được tính năng mới nhất. Hoặc đôi khi chứng chỉ Lets Encrypt không tự động gia hạn mặc dù đã kích hoạt crontab
cd /opt/letsencrypt && git pull
Nếu gặp thông báo lỗi như bên dưới:
error: Your local changes to 'letsencrypt-auto' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
Bạn sẽ cần sử dụng dòng lệnh này:
cd /opt/letsencrypt && git reset --hard && git pull

2. Cài đặt chứng chỉ Let’s Encrypt cho website

Tắt nginx và tiến hành cài đặt bằng 2 lệnh dưới:

# Stop Nginx
service nginx stop

# Issue SSL Let's Encrypt
/opt/letsencrypt/certbot-auto certonly --standalone

Sau đó, các bạn tiến hành nhập email của mình, chọn Y/A để đồng ý điều khoản.

Hướng dẫn cài đặt chứng chỉ SSL Let's Encrypt cho VPS (1)

Sau đó, bạn nhập tên miền cần cài đặt. Nếu không gặp vấn đề gì bạn sẽ gặp thông báo như bên dưới.

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/hocvps.com/fullchain.pem. Your cert will
expire on 2016-08-23. To obtain a new version of the certificate in
the future, simply run Certbot again.
- If you lose your account credentials, you can recover through
e-mails sent to admin@hocvps.com.
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Nếu bạn muốn cài đặt cho nhiều website. Bạn tiếp tục chạy 2 lệnh trên.

3. Cấu hình Nginx

Bài viết này mình viết theo hướng dẫn của hocvps nhưng ngắn gọn hơn, do đó mình sử dụng ví dụ và mô tả của hocvps để tiết kiệm thời gian.

Tạo file DH parameters 2048 bit (tạo một lần duy nhất trên VPS). Nếu như cài lần thứ 2, cho tên miền thứ 2 sẽ không cần chạy lệnh này nữa.

mkdir /etc/nginx/ssl/

Chạy lệnh dưới, trước khi cấu hình Nginx thì cần chạy lệnh này.

openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem

Chỉnh sửa cấu hình domain bằng lệnh: (bạn nhớ thay hocvps.com = tên miền của bạn, ví dụ mình là isharevn.net)

nano /etc/nginx/conf.d/hocvps.com.conf
  • Redirect toàn bộ www http sang https

Ngay khi mở file ra, các bạn sẽ nhìn thấy block này đầu tiên, các bạn tiến hành sửa tên miền hocvps.com thành tên miền của các bạn nhé

server {
listen 80;
server_name hocvps.com www.hocvps.com;
rewrite ^(.*) https://hocvps.com$1 permanent;
}
  • Redirect toàn bộ www https sang https

Các bạn thêm mới block dưới đây vào trên cùng, chú ý thay tên miền mình nhé. Các bạn có thể copy toàn bộ nội dung ra file notepad sau đó tổ hợp phím Ctrl + H rồi thay thế hocvps.com bằng tên miền của bạn.

server {
listen 443 ssl;
server_name www.hocvps.com;

# SSL
ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_prefer_server_ciphers on; 
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

rewrite ^(.*) https://hocvps.com$1 permanent;
}
  • Cấu hình SSL xử lý các request:

Các bạn tìm đến block thứ 3 (block đầu tiên vừa thêm vào, và block đầu tiên trước khi thêm đã thành block thứ 2, block thứ 2 trước khi thêm chính là block thứ 3 mà mình nói tới):

Đổi lại: listen 80 default_server; thành listen 443 ssl default_server;

Các bạn chú ý, chỉ cần đổi 80 sang 443 ssl như vậy là được rồi nhé. Cái này khi bạn cài tên miền thứ 2, thì sẽ không có default_server.

Sau cái dòng server_name hocvps.com; (ngay dưới dòng vừa sửa vài dòng thôi) thì các bạn thêm đoạn này vào.

# SSL
ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

# Improve HTTPS performance with session resumption
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;

# DH parameters
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
# Enable HSTS
add_header Strict-Transport-Security "max-age=31536000" always;

Các bạn chú ý thay tên miền nhé. Tốt nhất cứ copy vào file notepad sau đó tiền hành thay thế toàn bộ.

  • Cấu hình SSL với port quản lý HocVPS Script Admin

(Mình thì tiện mình làm, chứ mình nghĩ không cần, vì nếu như các bạn không redirect từ http sang https thì quản lý vẫn được và không ảnh hưởng gì cả)

Các bạn tìm kiếm đến block có port lúc các bạn cài Hocvps Script tương tự như bên dưới, các bạn thêm toàn bộ đoạn code từ 12 đến 18 nhé. Đặc biệt, vẫn chú ý phải thay tên miền hocvps.com thành tên miền của bạn. Tốt nhất là copy ra file notepad rồi Ctrl + H thôi.

server {
    listen 2018 ssl;

 	access_log        off;
    log_not_found     off;
 	error_log         off;

    	root /home/hocvps.com/private_html;
    index index.php index.html index.htm;
    	server_name hocvps.com;
 	
        error_page  497 https://$server_name:$server_port$request_uri;

    ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    auth_basic "Restricted";
    auth_basic_user_file /home/hocvps.com/private_html/hocvps/.htpasswd;
    
    ...
  • File cấu hình Nginx cuối cùng sẽ tương tự như sau:

Kiểm tra lại cấu hình Nginx

nginx -t

Nếu như phản hồi lại như này là ok:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Sau đó bạn khởi động lại Nginx mà mình vừa stop trước đó:

service nginx restart

Giờ truy cập vào website bạn sẽ hưởng thành quả:

Hướng dẫn cài đặt chứng chỉ SSL Let's Encrypt cho VPS (2)

4. Gia hạn và tự động gia hạn SSL Let’s Encrypt

Chứng chỉ SSL Let’s Encrypt sẽ hết hạn sau 90 ngày từ ngày cài đặt, do đó bạn cần tiến hành gia hạn trước thời gian đó.

Bạn có thể chạy gia hạn thủ công bằng lệnh:

/opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start"

Để gia hạn tự động, bạn cần cài đặt trong Crontab:

Mở file crontab:

EDITOR=nano crontab -e

Copy và paste đọna code dưới đây và tiến hành lưu lại:

30 2 * * * /opt/letsencrypt/certbot-auto renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/le-renew.log

Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát. Bạn nhận được thông báo sau là thành công

crontab: installing new crontab

Vậy là xong, bạn có thể yên tâm sử dụng Let’s Encrypt rồi đấy.

5. Xóa chứng chỉ Let’s Encrypt

Khi bạn không sử dụng Let’s Encrypt nữa, chuyển qua sử dụng của nhà cung cấp khác và muốn xóa chứng chỉ Let’s Encrypt đã cài, hãy sử dụng lệnh bên dưới:

/opt/letsencrypt/certbot-auto delete

Nguồn: isharevn