Let’s Encrypt là Tổ chức phát hành chứng chỉ (CA) mới, cung cấp cách dễ dàng để lấy và cài đặt chứng chỉ TLS / SSL miễn phí, cho phép HTTPS được mã hóa trên máy chủ web. Đơn giản hóa quy trình bằng cách cung cấp một ứng dụng Certbot, tự động hóa hầu hết các bước cần thiết. Hiện tại, toàn bộ quá trình lấy và cài đặt chứng chỉ hoàn toàn tự động trên cả máy chủ web Apache và Nginx. Chứng chỉ do Let’s Encrypt cấp được hầu hết các trình duyệt hiện nay tin dùng.
Điều kiện để cài đặt Let’s Encrypt
- Một Vps/ Dedicated server
- Quyền đăng nhập Root
- Một domain trỏ bản ghi DNS (A) đến IP máy chủ của bạn.
- Đã cài đặt Nginx trên CentOS 7
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách sử dụng ứng dụng certbot Let’s Encrypt để lấy chứng chỉ SSL miễn phí và sử dụng nó với Nginx trên CentOS 7. Chúng tôi cũng sẽ hướng dẫn bạn cách tự động gia hạn chứng chỉ SSL.
Cập nhật hệ thống
Chạy lệnh:
# sudo yum -y update
-y là một tham số tùy chọn. Nó phục vụ để tránh các câu hỏi xác nhận ở các bước tiếp theo.
Cài đặt gói bổ sung EPEL
Let’s Encrypt không có sẵn trong CentOS, vì vậy bạn cần cài đặt EPEL (Extra Packages for Enterprise Linux) có sẵn trên máy chủ. EPEL được sử dụng miễn phí và cung cấp nhiều gói mã nguồn mở.
Để cài đặt EPEL, chạy lệnh:
# sudo yum install -y epel-release
Nếu bạn đã cài đặt EPEL, bạn có thể bỏ qua bước này
Cài đặt Certbot
Certbot là một công cụ dễ sử dụng có thể tự động hóa các tác vụ lấy và gia hạn chứng chỉ SSL của Let’s Encrypt và định cấu hình máy chủ web.
Để cài đặt certbot từ kho EPEL, chạy lệnh:
# sudo yum install certbot
Khởi động lại Nginx:
# sudo systemctl restart nginx
Nhận chứng chỉ SSL
Trong hướng dẫn này chúng tôi lấy domain là example.com.
Để cài đặt một Website có https chúng ta dùng lệnh:
# sudo certbot --nginx -d example.com -d www.example.com
Certbot sẽ hỏi bạn muốn định cấu hình cài đặt HTTPS của mình như thế nào:
Đầu ra như sau
Please choose whether HTTPS access is required or optional. ——————————————————————————- 1: Easy – Allow both HTTP and HTTPS access to these sites 2: Secure – Make all requests redirect to secure HTTPS access ——————————————————————————- Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
Nếu đã cấu hình SLL cho domain trong /etc/nginx/conf.d/example.com.conf thì chọn là 1
Nếu là Website mới thì chọn 2 để Let’s Encrypt tự động cấu hình SSL cho tệp virtual host example.com.conf.
Nếu thành công thì sẽ hiện lên thông báo như sau:
IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2020-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew” – 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
Cập nhật thông số Diffie-Hellman
Để sửa lỗi trao đổi khóa ban đầu giữa máy chủ và người dùng. Chúng ta có thể nâng cao bảo mật bằng cách tạo một tập tin dhparam.pem mới và thêm nó vào khối máy chủ.
Tạo một tệp dhparam.pem bằng cách chạy lệnh:
# sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mở tệp nginx.conf:
# sudo nano /etc/nginx/nginx.conf
Thêm vào trong block {…}
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Kiểm tra lại cài đặt:
# sudo nginx -t
Đầu ra như bên dưới là đã thành công:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx:
# sudo systemctl restart nginx
Thiết lập tự động gia hạn
Chứng chỉ Let’s Encrypt có thời hạn là 90 ngày, nếu muốn dùng tiếp chúng ta phải tạo một cron chạy tự động trước khi hết hạn.
Để chạy gia hạn theo định kỳ chúng ta cần mở crontab:
# crontab -e
Dán vào dòng dưới cùng nội dung sau:
15 3 * * 1 /usr/bin/certbot renew --quiet
Cron trên chạy định kỳ vào 3:15 AM thứ 2 hàng tuần.