Hướng dẫn cài SSL Let’s Encrypt chạy Nginx trên CentOS 7

Giới thiệu SSL Let’s Encrypt

Let’s Encrypt là một Cơ quan Chứng nhận Mới cung cấp một cách dễ dàng để cài đặt các chứng chỉ TLS / SSL miễn phí, qua đó cho phép HTTPS được mã hóa trên máy chủ web. Nó đơn giản hóa quá trình bằng cách cung cấp một phần mềm khách hàng, Certbot, cái mà 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ỉ được tự động hoàn toàn trên cả máy chủ web Apache và Nginx



Hướng dẫn cài SSL Let's Encrypt

Trong bài viết này PhonuiIT.com sẽ hướng dẫn cho bạn cách sử dụng certbot, client Let’s Encrypt để tạo chứng chỉ SSL miễn phí và sử dụng nó với Nginx trên CentOS 7.



Điều kiện cần trước khi cài SSL Let’s Encrypt

Để có thể  thực hiện việc này  bạn sẽ cần một vài thứ:

  • Một VPS CentOS 7 .
  • Bạn phải có tên miền website. Nếu bạn chưa đăng kí tên miền thì bạn có thể đăng kí một cái cùng với một trong nhiều tên miền bên ngoài( ví dụ như Namecheap, GoDaddy vv).
  • Cấu hình DNS tên miền của bạn tới IP của VPS. Điều này là cần thiết vì  Let’s Encrypt xác nhận rằng bạn sở hữu miền mà nó đang cấp chứng chỉ cho. Ví dụ: nếu bạn muốn lấy giấy chứng nhận cho example.com, tên miền đó phải giải quyết đến máy chủ của bạn để quy trình xác nhận hoạt động. Thiết lập của mình sẽ sử dụng www.example.comexample.com như tên miền, vì vậy cả hai bản ghi DNS đều được yêu cầu

Khi bạn đã có tất cả những điều kiện cần trên thì chúng ta sẽ bắt đầu cài đặt Let’s Encrypt.

Các bước cài đặt SSL Let’s Encrypt Client

Bước 1 — Cài đặt Certbot Let’s Encrypt Client

Bước đầu tiên là dùng Let’s Encrypt để sở hữu chứng chỉ SSL là cài đặt software certbot trên server của bạn. Hiện tại thì cách tốt nhất để cài đặt là thông qua kho EPEL.

Kích hoạt truy cập đến kho EPEL trên server của bạn bằng cách gõ:

 

Azdigi

$ sudo yum install epel-release

Bạn tiếp tục cài certbot-nginx bằng cách gõ:

$ sudo yum install certbot-nginx

certbot Let’s Encrypt client bây giờ đã được cài đặt và sẵn sàng để sử dụng.

Bước 2 — Cài đặt Nginx

Nếu bạn vẫn chưa cài đặt Nginx thì bạn có thể làm như sau. Kho EPEL nên được mở từ phần trước nên bạn có thể cài đặt Nginx bằng cách gõ:

$ sudo yum install nginx

Sau đó khởi động Nginx sử dụng systemctl:

$ sudo systemctl start nginx

Certbot có thể tự động cấu hình SSL cho Nginx, nhưng nó cần để có thể tìm đúng khối server trong cấu hình của bạn. Nó thực hiện việc này bằng cách tìm kiếm một chỉ thị server_name phù hợp với tên miền bạn đang yêu cầu cấp chứng chỉ. Nếu bạn đang tìm với một cài đặt Nginx tươi, bạn có thể cập nhật tập tin cấu hình mặc định:

$ sudo vi /etc/nginx/nginx.conf

Tìm dòng server_name:

/etc/nginx/sites-available/default

server_name _;

Thay thế  dấu gạch dưới _với tên miền của bạn:

/etc/nginx/nginx.conf

server_name example.com www.example.com;

Lưu file và thoát trình chỉnh sửa văn bản. Xác minh cú pháp của những chỉnh sửa cấu hình của bạn với:

$ sudo nginx -t

Nếu nó chạy mà không có lỗi, load lại Nginx để load cấu hình mới:

$ sudo systemctl reload nginx

Bây giờ Certbot có thể tìm khối  server chính xác và update nó. Bây giờ chúng ta sẽ update tường lửa để cho phép lưu lượng truy cập HTTPS.

Bước 3 — Update tường lửa sử dụng SSL Let’s Encrypt

Trường hợp bạn đang bật tường lửa, bạn hãy thực hiện mở 2 cổng 80 và 443. Nếu bạn không chạy tường lửa thì bạn có thể bỏ qua.

Mở port trên firewall  bằng cách gõ:

$ sudo firewall-cmd --add-service=http

$ sudo firewall-cmd --add-service=https

$ sudo firewall-cmd --runtime-to-permanent

Nếu có một tường lửa iptables đang chạy, các lệnh bạn cần chạy phụ thuộc rất nhiều vào bộ quy tắc hiện tại của bạn. Đối với bộ quy tắc cơ bản, bạn có thể thêm quyền truy cập HTTP và HTTPS bằng cách nhập

$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT $ sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Bây giờ bạn đã sẵn sàng chạy Certbot và lấy chứng chỉ của bạn.

Bước 4 — Lấy chứng chỉ SSL Let’s Encrypt cho tên miền

Certbot cung cấp rất nhiều cách lấy chứng chỉ SSL thông qua nhiều plugin. Nginx plugin sẽ phụ trách việc cấu hình lại Nginx và load lại cấu hình bất cứ khi nào cần thiết:

$ sudo certbot --nginx -d example.com -d www.example.com

Nó sẽ chạy certbot với plugin –nginx, sử dụng -d để xác định tên hợp lệ của chứng chỉ.

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 sẽ liên lạc với máy chủ Let’s Encrypt, sau đó chạy thử thách để xác minh rằng bạn kiểm soát tên miền mà bạn đang yêu cầu cấp chứng chỉ

Nếu thành công, certbot sẽ hỏi bạn sẽ cấu hình cài đặt HTTPS như thế nào:

Output

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):

Bạn nhập vào 1 hoặc 2 tuỳ cách bạn muốn sau đó nhấn  ENTER. Cấu hình sẽ được update và Nginx sẽ load để tiếp nhận các cài đặt mới. Certbot sẽ bao gồm một tin nhắn báo cho bạn là quy trình đã thành công và nơi lưu trữ chứng chỉ của bạn:

Output

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at

/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will

expire on 2017-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

Chứng chỉ của bạn được tải xuống, cài đặt và nạp thành công.

Lúc này bạn hãy vào lại website bằng cách sử dụng thêm https:// phía trước và chú ý đến chỉ báo bảo mật của trình duyệt của bạn.

Nếu website hiển thị có biểu tượng khóa màu xanh lá cây là bạn đã cài đặt thành công rồi nhé.

Bước 5 — Update tham số Diffie-Hellman

Nếu bạn kiểm tra máy chủ của mình bây giờ, nó sẽ chỉ nhận được  B do thông số Diffie-Hellman yếu. Điều này ảnh hưởng đến tính bảo mật của việc trao đổi khóa ban đầu giữa máy chủ của chúng tôi và người dùng của nó. Chúng tôi có thể khắc phục sự cố này bằng cách tạo tệp tin dhparam.pem mới và thêm nó vào khối server của chúng tôi.

Tạo file sử dụng openssl:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Điều này sẽ mất một vài phút. Khi xong, mở file cấu hình Nginx chứa khối server của bạn.Trong ví dụ này thì nó là file cấu hình mặc định:

$ sudo vi /etc/nginx/nginx.conf

Dán dòng sau ở bất cứ đâu trong khối  server:

ssl_dhparam /etc/ssl/certs/dhparam.pem;

Lưu file và thoát trình chỉnh sửa văn bản của bạn sau đó xác mình cấu hình:

$ sudo nginx -t

Nếu không có lỗi thì load lại Nginx:

$ sudo systemctl reload nginx

Trang của bạn đã an toàn hơn và bây giờ nên được nhận điểm A.

Bước 6 — Cài đặt tự động làm mới SSL Let’s Encrypt

Tất cả các bản SSL miễn phí được chứng nhận của Encrypt chỉ có giá trị trong 90 ngày. Giải pháp để được sử dụng tiếp là cần gia hạn tự động hóa chứng chỉ của họ.

Để chạy kiểm tra gia hạn mình sẽ sử dụng cron. Một dịch vụ hệ thống tiêu chuẩn để chạy các công việc định kỳ.

$ sudo crontab -e

Dán vào dòng sau, sau đó lưu và đóng nó:

59 23 * * * /usr/bin/certbot renew --quiet

Ý nghĩa của lệnh này  là:

  • 59 23 * * * /usr/bin/certbot  : chạy command sau vào lúc 23:59 phút tối  mỗi ngày”. Bạn có thể thay đổi thời gian nào bạn muốn.
  • renew : cho sẽ kiểm tra tất cả chứng chỉ được cài đặt trên hệ thống. Update bất cứ thiết lập nào đã hết hạn ít nhất 30 ngày.
  • –quiet : Certbot không được suất ra thông tin hoặc là đợi để người dùng nhập thông tin vào.

cron sẽ chạy command này hàng ngày. Chứng chỉ được cài đặt sẽ được tự động gia hạn khi còn 30 ngày hoặc ít hơn.

Kết luận

Vậy là trong bài viết này PhonuiIT.com đã hướng dẫn bạn cài đặt certbot của Let’s Encrypt. Cài đặt các chứng chỉ SSL cho miền. 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. Ngoài ra bạn có thể đọc thêm tài liệu từ trang củ của Let’s Encrypt

 

4.9/5 - (98 bình chọn)



Nhận thông báo qua email
Nhân thông báo cho
guest
2 Bình luận
Bình chọn nhiều nhất
Mới nhất Cũ nhất
Inline Feedbacks
View all comments
Thanh Lương
Thanh Lương
4 năm cách đây

Rất chi tiết, em cảm ơn bác đã chia sẻ tận tâm.

Trung Nguyễn
Trung Nguyễn
1 năm cách đây

Thank admin, em đã làm theo và chạy ngon lành

2
0
Bạn thích bài viết này, viết bình luận nhé.x