Thứ năm, 17/12/2015 | 00:00 GMT+7

Cách bảo mật Nginx bằng Let's Encrypt trên Ubuntu 14.04

Let's Encrypt là Tổ chức phát hành certificate (CA) mới cung cấp cách dễ dàng để lấy và cài đặt certificate TLS / SSL miễn phí, do đó cho phép HTTPS được mã hóa trên web server . Nó đơn giản hóa quy trình bằng cách cung cấp một ứng dụng client , 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 certificate hoàn toàn tự động trên cả web server Apache và Nginx.

Trong hướng dẫn này, ta sẽ chỉ cho bạn cách sử dụng Certbot để lấy certificate SSL miễn phí và sử dụng nó với Nginx trên Ubuntu 14.04 LTS. Ta cũng sẽ hướng dẫn bạn cách tự động gia hạn certificate SSL của bạn.

Ta sẽ sử dụng file cấu hình Nginx mặc định trong hướng dẫn này thay vì file khối server riêng biệt. Ta khuyên bạn nên tạo các file khối server Nginx mới cho mỗi domain vì nó giúp tránh một số lỗi phổ biến và duy trì các file mặc định dưới dạng cấu hình dự phòng như dự định. Nếu bạn muốn cài đặt SSL bằng cách sử dụng khối server thay thế, bạn có thể làm theo các khối server Nginx này với hướng dẫn Let's Encrypt .

Yêu cầu

Trước khi làm theo hướng dẫn này, bạn cần một vài thứ.

  • Server Ubuntu 14.04 với user không phải root có quyền sudo . Bạn có thể tìm hiểu cách cài đặt một account user như vậy theo hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 14.04 .
  • Đã cài đặt Nginx,Cách cài đặt Nginx trên Ubuntu 14.04 LTS
  • Bạn phải sở hữu hoặc kiểm soát domain đã đăng ký mà bạn muốn sử dụng certificate . Nếu bạn chưa có domain đã đăng ký, bạn có thể đăng ký một domain với một trong nhiều công ty đăng ký domain hiện có (ví dụ: Namecheap, GoDaddy, v.v.).
  • Bản ghi DNS A trỏ domain của bạn đến địa chỉ IP công cộng của server của bạn. Bạn có thể làm theo hướng dẫn tên server này để biết chi tiết về cách thêm chúng. Điều này là bắt buộc vì cách Let's Encrypt xác thực rằng bạn sở hữu domain mà nó đang cấp certificate . Ví dụ: nếu bạn muốn lấy certificate cho example.com , thì domain đó phải phân giải tới server của bạn để quá trình xác thực hoạt động. Cài đặt của ta sẽ sử dụng example.comwww.example.com làm domain , vì vậy cả hai bản ghi DNS đều được yêu cầu .

Khi bạn đã có tất cả các yêu cầu , hãy chuyển sang cài đặt Certbot, phần mềm client Let's Encrypt.

Bước 1 - Cài đặt Certbot

Bước đầu tiên để sử dụng Let's Encrypt để lấy certificate SSL là cài đặt phần mềm certbot trên server của bạn. Các nhà phát triển Certbot duy trì repository Ubuntu của riêng họ với các version cập nhật của phần mềm. Vì Certbot đang trong quá trình phát triển tích cực nên bạn nên sử dụng repository này để cài đặt một Certbot mới hơn được cung cấp bởi Ubuntu.

Đầu tiên, thêm repository :

  • sudo add-apt-repository ppa:certbot/certbot

Bạn cần nhấn ENTER để chấp nhận. Sau đó, cập nhật danh sách gói để nhận thông tin gói của repository mới:

  • sudo apt-get update

Và cuối cùng, cài đặt Certbot với apt-get :

  • sudo apt-get install python-certbot-nginx

Ứng dụng certbot Let's Encrypt hiện đã sẵn sàng để sử dụng.

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

Certbot có thể tự động cấu hình SSL cho Nginx, nhưng nó cần có khả năng tìm thấy khối server chính xác trong cấu hình của bạn. Nó thực hiện điều này bằng cách tìm kiếm lệnh server_name trùng với domain bạn đang certificate request . Nếu bạn đang bắt đầu với bản cài đặt Nginx mới, bạn có thể cập nhật file cấu hình mặc định:

  • sudo nano /etc/nginx/sites-available/default

Tìm dòng server_name hiện có:

/ etc / nginx / sites-available / default
server_name localhost; 

Thay thế localhost bằng domain của bạn:

/ etc / nginx / sites-available / default
server_name example.com www.example.com; 

Lưu file và thoát khỏi editor . Xác minh cú pháp của các chỉnh sửa cấu hình của bạn bằng:

  • sudo nginx -t

Nếu điều đó chạy không có lỗi, hãy reload Nginx để tải cấu hình mới:

  • sudo service nginx reload

Certbot bây giờ sẽ có thể tìm thấy khối server chính xác và cập nhật nó. Bây giờ ta sẽ cập nhật firewall của bạn để cho phép truy cập HTTP S.

Bước 3 - Lấy certificate SSL

Certbot cung cấp nhiều cách khác nhau để lấy certificate SSL, thông qua các plugin khác nhau. Plugin Nginx sẽ xử lý việc cấu hình lại Nginx và reload cấu hình khi nào cần thiết:

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

Điều này chạy certbot với plugin --nginx , sử dụng -d để chỉ định tên mà ta muốn certificate hợp lệ.

Nếu đây là lần đầu tiên bạn chạy certbot , bạn sẽ được yêu cầu 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ẽ giao tiếp với server Let's Encrypt, sau đó chạy thử thách để xác minh bạn kiểm soát domain mà bạn đang certificate request .

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

Output
Please 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 rồi nhấn ENTER . Cấu hình sẽ được cập nhật và Nginx sẽ reload để chọn 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ữ certificate 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

Các certificate của bạn hiện đã được download , cài đặt và cấu hình . Hãy thử reload trang web bằng https:// và để ý chỉ báo bảo mật của trình duyệt. Nó phải thể hiện rằng trang web được bảo mật đúng cách, thường có biểu tượng ổ khóa màu xanh lục. Nếu bạn kiểm tra server của bạn bằng Kiểm tra server SSL Labs, server sẽ đạt điểm A.

Bước 4 - Xác minh Tự động Gia hạn Certbot

Chứng chỉ của Let's Encrypt chỉ có giá trị trong chín mươi ngày. Điều này nhằm khuyến khích user tự động hóa quy trình gia hạn certificate của họ. Gói certbot mà ta đã cài đặt sẽ giải quyết việc này cho ta bằng cách chạy 'certbot gia hạn' hai lần một ngày thông qua bộ đếm thời gian systemd. Trên các bản phân phối không phải systemd, chức năng này được cung cấp bởi một tập lệnh được đặt trong /etc/cron.d . Tác vụ này chạy hai lần một ngày và sẽ gia hạn bất kỳ certificate nào trong vòng ba mươi ngày kể từ ngày hết hạn.

Để kiểm tra quá trình gia hạn, bạn có thể thực hiện chạy thử nghiệm với certbot :

  • sudo certbot renew --dry-run

Nếu bạn không thấy lỗi, bạn đã hoàn tất. Khi cần thiết, Certbot sẽ gia hạn certificate của bạn và reload 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 một thông báo đến email bạn đã chỉ định, cảnh báo cho bạn khi certificate của bạn sắp hết hạn.

Kết luận

Trong hướng dẫn này, ta đã cài đặt certbot client Let's Encrypt, download certificate SSL cho domain của ta , cấu hình Nginx để sử dụng các certificate này và cài đặt gia hạn certificate tự động. Nếu bạn có thêm câu hỏi về việc sử dụng Certbot, tài liệu của họ là một nơi tốt để tham khảo .


Tags:

Các tin liên quan

Cách chạy Nginx trong Docker Container trên Ubuntu 14.04
2015-10-28
Cách thêm ngx_pagespeed vào Nginx trên CentOS 7
2015-09-30
Cách thêm ngx_pagespeed vào Nginx trên Ubuntu 14.04
2015-09-22
Cách thêm ngx_pagespeed vào Nginx trên Debian 8
2015-09-20
Cách bảo vệ server Nginx với Fail2Ban trên Ubuntu 14.04
2015-08-14
Cách cài đặt HHVM với Nginx trên Ubuntu 14.04
2015-08-12
Cách thiết lập xác thực mật khẩu với Nginx trên Ubuntu 14.04
2015-08-10
Cách cài đặt Nginx trên Debian 8
2015-07-09
Cách lưu trữ nhiều trang web một cách an toàn với Nginx và Php-fpm trên Ubuntu 14.04
2015-07-01
Cách tạo blog bằng Ghost và Nginx trên Ubuntu 14.04
2015-06-28