Hướng dẫn cài đặt chứng chỉ SSL Let's Encrypt cho VPS
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
cd /opt/letsencrypt && git pullNế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.
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 successfulSau đó 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ả:
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