Giới thiệu
Let’s Encrypt là Cơ quan cấp chứng chỉ (CA) cung cấp một cách dễ dàng để lấy và cài đặt chứng chỉ TLS/SSL miễn phí , từ đó cho phép HTTPS được mã hóa trên máy chủ web. Nó đơn giản hóa quy trình bằng cách cung cấp một ứng dụng khách phần mềm, Certbot, cố gắng tự động hóa hầu hết (nếu không phải tất cả) 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ả Apache và Nginx.
Yêu cầu
Để làm theo hướng dẫn này, bạn sẽ cần:
- Một máy chủ Ubuntu 20.04
- Một tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng
example.com
. - Cả hai bản ghi DNS sau đây đều được thiết lập cho máy chủ của bạn. Nếu bạn đang sử dụng DigitalOcean, vui lòng xem tài liệu DNS của chúng tôi để biết chi tiết về cách thêm chúng.
- A record
example.com
trỏ đến địa chỉ IP public của máy chủ của bạn. - A record
www.example.com
trỏ đến địa chỉ IP public của máy chủ của bạn.
- A record
- Cài đặt Nginx. Ví dụ:
/etc/nginx/sites-available/example.com
Bước 1 – Cài đặt Certbot
Bước đầu tiên để sử dụng Let’s Encrypt để lấy chứng chỉ SSL là cài đặt phần mềm Certbot trên máy chủ của bạn.
Cài đặt Certbot và đó là plugin Nginx với apt
:
sudo apt install certbot python3-certbot-nginx
Certbot hiện đã sẵn sàng để sử dụng, nhưng để nó tự động định cấu hình SSL cho Nginx, chúng ta cần xác minh một số cấu hình của Nginx.
Bước 2 – Xác nhận cấu hình của Nginx
Certbot cần có khả năng tìm thấy server
chính xác trong cấu hình Nginx của bạn để có thể tự động định cấu hình SSL. Cụ thể, nó thực hiện điều này bằng cách tìm kiếm server_name
phù hợp với tên miền mà bạn yêu cầu chứng chỉ.
Nếu bạn đã làm theo bước thiết lập máy chủ trong hướng dẫn cài đặt Nginx , cấu hình /etc/nginx/sites-available/example.com
Để kiểm tra, hãy mở tệp cấu hình cho miền của bạn bằng cách sử dụng nano
hoặc trình soạn thảo văn bản yêu thích của bạn:
sudo nano /etc/nginx/sites-available/example.com
Tìm server_name
dòng hiện có:
...
server_name example.com www.example.com;
...
Thoát trình chỉnh sửa của bạn và chuyển sang bước tiếp theo.
Nếu không, hãy cập nhật nó cho phù hợp. Sau đó lưu tệp, thoát trình chỉnh sửa và xác minh cú pháp chỉnh sửa cấu hình của bạn:
sudo nginx -t
Nếu bạn gặp lỗi, hãy mở lại tệp khối máy chủ và kiểm tra xem có lỗi chính tả hoặc ký tự bị thiếu nào không. Khi cú pháp tệp cấu hình của bạn chính xác, hãy tải lại Nginx để tải cấu hình mới:
sudo systemctl reload nginx
Certbot hiện có thể tìm đúng server
và tự động cập nhật.
Bước 3 – Lấy chứng chỉ SSL
Certbot cung cấp nhiều cách khác nhau để lấy chứng chỉ SSL thông qua plugin. Plugin Nginx sẽ đảm nhiệm việc cấu hình lại Nginx và tải lại cấu hình bất cứ khi nào cần thiết. Để sử dụng plugin này, hãy gõ như sau:
sudo certbot --nginx -d example.com -d www.example.com
Điều này chạy certbot
với --nginx
plugin, sử dụng -d
để chỉ định tên miền mà chúng tôi muốn chứng chỉ hợp lệ.
Nếu đây là lần đầu tiên bạn chạy certbot
, bạn sẽ được nhắc nhập địa chỉ email và đồng ý với các điều khoản dịch vụ. Sau khi làm như vậy, certbot
nó sẽ liên lạc với máy chủ Let’s Encrypt, sau đó xác minh rằng bạn kiểm soát miền mà bạn đang yêu cầu chứng chỉ.
Nếu thành công, certbot
nó sẽ hỏi bạn muốn định cấu hình cài đặt HTTPS của mình như thế nào.
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Chọn lựa chọn của bạn sau đó nhấn ENTER
. Cấu hình sẽ được cập nhật và Nginx sẽ tải lại để nhận các cài đặt mới. certbot
sẽ kết thúc bằng một thông báo cho bạn biết quá trình đã thành công và nơi lưu trữ chứng chỉ của bạn:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. 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"
- 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
Chứng chỉ của bạn được tải xuống, cài đặt và tải. Hãy thử tải lại trang web của bạn bằng cách sử dụng https://
và chú ý đến chỉ báo bảo mật của trình duyệt. Nó phải chỉ ra rằng trang web được bảo mật đúng cách, thường có biểu tượng khóa. Nếu bạn kiểm tra máy chủ của mình bằng Kiểm tra máy chủ SSL Labs thì máy chủ sẽ đạt điểm A.
Hãy kết thúc bằng cách kiểm tra quá trình gia hạn.
Bước 5 – Xác minh tính năng tự động gia hạn của Certbot
Chứng chỉ của Let’s Encrypt chỉ có hiệu lực trong 90 ngày. Điều này nhằm khuyến khích người dùng tự động hóa quy trình gia hạn chứng chỉ của họ. Gói certbot
chúng tôi đã cài đặt sẽ giải quyết vấn đề này cho chúng tôi bằng cách thêm bộ đếm thời gian systemd sẽ chạy hai lần một ngày và tự động gia hạn bất kỳ chứng chỉ nào trong vòng ba mươi ngày kể từ ngày hết hạn.
Bạn có thể truy vấn trạng thái của bộ hẹn giờ bằng systemctl
:
sudo systemctl status certbot.timer
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Để kiểm tra quá trình gia hạn, bạn có thể chạy thử với certbot
:
sudo certbot renew --dry-run
Nếu bạn thấy không có lỗi, bạn đã hoàn tất. Khi cần, Certbot sẽ gia hạn chứng chỉ của bạn và tải lại Nginx để nhận các thay đổi. Nếu quá trình gia hạn tự động không thành công, Let’s Encrypt sẽ gửi thông báo đến email bạn đã chỉ định, cảnh báo bạn khi chứng chỉ của bạn sắp hết hạn.
Phần kết luận
Trong hướng dẫn này, bạn đã cài đặt ứng dụng khách Let’s Encrypt certbot
, tải xuống chứng chỉ SSL cho miền của mình, định cấu hình Nginx để sử dụng các chứng chỉ này và thiết lập gia hạn chứng chỉ tự động