Cách bảo mật Nginx bằng Let's Encrypt trên Debian 8
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
(trước đây được gọi là letsencrypt
), cố gắng tự động hóa hầu hết (nếu không phải tất cả) các bước bắt buộc. Hiện tại, toàn bộ quá trình lấy và cài đặt certificate hoàn toàn tự động chỉ trên các web server Apache. Tuy nhiên, Let's Encrypt được dùng để dễ dàng có được certificate SSL miễn phí, certificate này có thể được cài đặt theo cách thủ công, dù bạn lựa chọn phần mềm web server nào. Trong hướng dẫn này, ta sẽ chỉ cho bạn cách sử dụng Let's Encrypt để lấy certificate SSL miễn phí và sử dụng nó với Nginx trên Debian 8. Ta cũng sẽ hướng dẫn bạn cách tự động gia hạn certificate SSL của bạn . Nếu bạn đang chạy một web server khác, chỉ cần làm theo tài liệu của web server của bạn để tìm hiểu cách sử dụng certificate với cài đặt của bạn.
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ứ.
Bạn phải có server Debian 8 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 cho Debian 8 của ta .
Nếu bạn chưa cài đặt Nginx trên server của bạn , hãy làm như vậy theo hướng dẫn này .
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.).
Nếu bạn chưa có, hãy đảm bảo tạo Bản ghi A trỏ domain của bạn đến địa chỉ IP công cộng trên server của bạn (nếu bạn đang sử dụng DNS của DigitalOcean, bạn có thể làm theo hướng dẫn này ). Đ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.com
và www.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 phần mềm client Let's Encrypt.
Bước 1: Cài đặt Certbot, Ứng dụng khách Hãy Mã hóa
Bước đầu tiên để sử dụng Let's Encrypt để lấy certificate SSL là cài đặt ứng dụng client certbot
Let's Encrypt trên server của bạn.
Gói certbot
không khả dụng khi Debian 8 được phát hành. Để truy cập vào gói certbot
, ta sẽ phải kích hoạt repository Jessie backports trên server của ta . Kho lưu trữ này được dùng để cài đặt các version phần mềm mới hơn những version có trong repository lưu trữ ổn định.
Thêm repository backports vào server của bạn bằng lệnh :
- echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
Sau khi thêm repository mới, hãy cập nhật index gói apt
để download thông tin về các gói mới:
- sudo apt-get update
Sau khi cập nhật repository , bạn có thể cài đặt gói certbot
bằng cách nhắm đến repository backports:
Lưu ý: Khi sử dụng backports, bạn chỉ nên cài đặt các gói cụ thể mà bạn yêu cầu, thay vì sử dụng repository cho các bản cập nhật chung. Các gói backport có ít đảm bảo tương thích hơn các kho chính.
Để giúp tránh vô tình cài đặt hoặc cập nhật các gói bằng cách sử dụng repository này, bạn phải chuyển rõ ràng cờ -t
với tên repository để cài đặt các gói từ các cổng lùi.
- sudo apt-get install certbot -t jessie-backports
certbot
dụng certbot
bây giờ đã sẵn sàng để sử dụng.
Bước 2: Lấy certificate SSL
Let's Encrypt cung cấp nhiều cách khác nhau để lấy certificate SSL, thông qua các plugin khác nhau. Không giống như plugin Apache, được đề cập trong một hướng dẫn khác , hầu hết các plugin sẽ chỉ giúp bạn lấy được certificate mà bạn phải cấu hình web server của bạn theo cách thủ công. Các plugin chỉ lấy certificate và không cài đặt chúng, được gọi là “trình xác thực” vì chúng được sử dụng để xác thực xem server có được cấp certificate hay không.
Ta sẽ hướng dẫn bạn cách sử dụng plugin Webroot để lấy certificate SSL.
Cách sử dụng Plugin Webroot
Plugin Webroot hoạt động bằng cách đặt một file đặc biệt trong folder /.well-known
trong folder root tài liệu của bạn, file này có thể được mở (thông qua web server của bạn) bằng dịch vụ Let's Encrypt để xác thực. Tùy thuộc vào cấu hình của bạn, bạn có thể cần cho phép rõ ràng quyền truy cập vào folder /.well-known
.
Nếu bạn chưa cài đặt Nginx, hãy làm theo hướng dẫn này . Tiếp tục bên dưới khi bạn hoàn thành.
Để đảm bảo folder có thể truy cập vào Let's Encrypt để xác thực, hãy thực hiện thay đổi nhanh chóng đối với cấu hình Nginx của ta . Theo mặc định, nó được đặt tại /etc/nginx/sites-available/default
. Ta sẽ sử dụng nano
để chỉnh sửa nó:
- sudo nano /etc/nginx/sites-available/default
Bên trong khối server , hãy thêm khối vị trí này:
location ~ /.well-known { allow all; }
Bạn cũng cần tra cứu root tài liệu của bạn được đặt thành gì bằng cách tìm kiếm chỉ thị root
, vì đường dẫn là bắt buộc để sử dụng plugin Webroot. Nếu bạn đang sử dụng file cấu hình mặc định, file root sẽ là /var/www/html
.
Lưu và thoát.
Kiểm tra cấu hình của bạn để tìm lỗi cú pháp:
- sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu không tìm thấy lỗi nào, hãy khởi động lại Nginx bằng lệnh sau:
- sudo systemctl restart nginx
Bây giờ ta đã biết webroot-path
của bạn , ta có thể sử dụng plugin Webroot để certificate request SSL bằng các lệnh này. Ở đây, ta cũng đang chỉ định domain của bạn với tùy chọn -d
. Nếu bạn muốn một certificate duy nhất hoạt động với nhiều domain (ví dụ: example.com
và www.example.com
), hãy đảm bảo bao gồm tất cả chúng. Ngoài ra, hãy đảm bảo bạn thay thế các phần được đánh dấu bằng (các) đường dẫn webroot và (các) domain thích hợp:
- sudo certbot certonly -a webroot --webroot-path=/var/www/html -d example.com -d www.example.com
Sau khi khởi certbot
, bạn sẽ được yêu cầu nhập email của bạn và đồng ý với các điều khoản dịch vụ của Let's Encrypt. Sau đó, thử thách sẽ chạy. Nếu mọi thứ đều thành công, bạn sẽ thấy một thông báo kết quả giống như sau:
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-09-05. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you lose your account credentials, you can recover through e-mails sent to sammy@example.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
Bạn cần lưu ý đường dẫn và ngày hết hạn của certificate , được đánh dấu trong kết quả ví dụ.
Tường lửa Lưu ý: Nếu bạn nhận được lỗi như Failed to connect to host for DVSNI challenge
, firewall của server của bạn có thể cần được cấu hình để cho phép lưu lượng TCP trên cổng 80
và 443
.
Lưu ý: Nếu domain của bạn đang định tuyến thông qua một dịch vụ DNS như CloudFlare, bạn cần phải tạm thời vô hiệu hóa nó cho đến khi bạn có được certificate .
Tệp certificate
Sau khi có certificate , bạn sẽ có các file được mã hóa PEM sau:
- cert.pem: Chứng chỉ domain của bạn
- chain.pem: Chứng chỉ chuỗi Let's Encrypt
- fullchain.pem:
cert.pem
vàchain.pem
kết hợp - privkey.pem: Khóa riêng tư của certificate của bạn
Điều quan trọng là bạn phải biết vị trí của các file certificate vừa được tạo, vì vậy bạn có thể sử dụng chúng trong cấu hình web server của bạn . Bản thân các file được đặt trong một folder con trong /etc/letsencrypt/archive
. Tuy nhiên, Let's Encrypt tạo các softlink đến các file certificate mới nhất trong folder /etc/letsencrypt/live/ your_domain_name
. Bởi vì các liên kết sẽ luôn trỏ đến các file certificate mới nhất, đây là đường dẫn mà bạn nên sử dụng để tham chiếu đến các file certificate của bạn .
Bạn có thể kiểm tra xem các file có tồn tại hay không bằng cách chạy lệnh này (thay thế bằng domain của bạn):
- sudo ls -l /etc/letsencrypt/live/your_domain_name
Đầu ra phải là bốn file certificate đã đề cập trước đó. Trong giây lát, bạn sẽ cấu hình web server của bạn để sử dụng fullchain.pem
làm file certificate và privkey.pem
làm file khóa certificate .
Tạo group Diffie-Hellman mạnh mẽ
Để tăng cường bảo mật hơn nữa, bạn cũng nên tạo một group Diffie-Hellman mạnh mẽ. Để tạo group 2048-bit, hãy sử dụng lệnh sau:
- sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Quá trình này có thể mất vài phút nhưng khi hoàn tất, bạn sẽ có một group DH mạnh mẽ tại /etc/ssl/certs/dhparam.pem
.
Bước 3: Cấu hình TLS / SSL trên Server Web (Nginx)
Đến đây bạn đã có certificate SSL, bạn cần cấu hình web server Nginx của bạn để sử dụng nó.
Ta sẽ thực hiện một số điều chỉnh đối với cấu hình của bạn :
- Ta sẽ tạo đoạn mã cấu hình chứa khóa SSL và các vị trí file certificate của ta .
- Ta sẽ tạo đoạn mã cấu hình chứa cài đặt SSL mạnh được dùng với bất kỳ certificate nào trong tương lai.
- Ta sẽ điều chỉnh các khối server Nginx để xử lý các yêu cầu SSL và sử dụng hai đoạn mã trên.
Phương pháp cấu hình Nginx này sẽ cho phép ta giữ các khối server sạch sẽ và đưa các phân đoạn cấu hình chung vào các module có thể tái sử dụng.
Tạo đoạn mã cấu hình trỏ đến khóa và certificate SSL
Đầu tiên, hãy tạo đoạn mã cấu hình Nginx mới trong folder /etc/nginx/snippets
.
Để phân biệt đúng mục đích của file này, ta sẽ đặt tên nó là ssl-
theo sau là domain của ta , theo sau là .conf
ở cuối:
- sudo nano /etc/nginx/snippets/ssl-example.com.conf
Trong file này, ta chỉ cần đặt chỉ thị ssl_certificate
thành file certificate của ta và ssl_certificate_key
thành khóa được liên kết. Trong trường hợp của ta , nó sẽ trông như thế này:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Khi bạn đã thêm những dòng đó, hãy lưu file .
Tạo đoạn mã cấu hình với cài đặt mã hóa mạnh
Tiếp theo, ta sẽ tạo một đoạn mã khác sẽ xác định một số cài đặt SSL. Điều này sẽ cài đặt Nginx với bộ mật mã SSL mạnh mẽ và kích hoạt một số tính năng nâng cao sẽ giúp giữ an toàn cho server của ta .
Các tham số ta sẽ đặt được dùng lại trong các cấu hình Nginx trong tương lai, vì vậy ta sẽ đặt tên chung cho file :
- sudo nano /etc/nginx/snippets/ssl-params.conf
Để cài đặt Nginx SSL một cách an toàn, ta sẽ sử dụng các đề xuất của Remy van Elst trên trang Cipherli.st . Trang web này được thiết kế để cung cấp cài đặt mã hóa dễ sử dụng cho phần mềm phổ biến. Bạn có thể đọc thêm về các quyết định của anh ấy liên quan đến các lựa chọn Nginx tại đây .
Lưu ý: Các cài đặt đề xuất mặc định trên Cipherli.st cung cấp khả năng bảo mật mạnh mẽ. Đôi khi, điều này phải trả giá bằng khả năng tương thích với client cao hơn. Nếu bạn cần hỗ trợ các ứng dụng client cũ hơn, có một danh sách thay thế có thể được truy cập bằng cách nhấp vào liên kết trên liên kết có nhãn “Có, hãy cung cấp cho tôi một trang web mật mã hoạt động với phần mềm cũ / cũ”.
Danh sách khả năng tương thích được dùng thay cho các đề xuất mặc định trong cấu hình bên dưới. Việc lựa chọn cấu hình nào bạn sử dụng sẽ phụ thuộc phần lớn vào những gì bạn cần hỗ trợ.
Vì mục đích của ta , ta có thể sao chép toàn bộ các cài đặt được cung cấp. Ta chỉ cần thực hiện một vài sửa đổi nhỏ.
Đầu tiên, ta sẽ thêm trình phân giải DNS ưa thích của bạn cho các yêu cầu ngược dòng. Ta sẽ sử dụng Google cho hướng dẫn này. Ta cũng sẽ tiếp tục và đặt cài đặt ssl_dhparam
trỏ đến file Diffie-Hellman mà ta đã tạo trước đó.
Cuối cùng, bạn nên dành một chút thời gian để đọc về Bảo mật truyền tải nghiêm ngặt HTTP hoặc HSTS và cụ thể là về chức năng “tải trước” . Tải trước HSTS cung cấp khả năng bảo mật cao hơn, nhưng có thể gây ra hậu quả sâu rộng nếu vô tình được bật hoặc bật không đúng cách. Trong hướng dẫn này, ta sẽ không tải trước cài đặt, nhưng bạn có thể sửa đổi cài đặt đó nếu bạn chắc chắn rằng bạn hiểu các hàm ý:
# from https://cipherli.st/ # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; # Disable preloading HSTS for now. You can use the commented out header line that includes # the "preload" directive if you understand the implications. #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; ssl_dhparam /etc/ssl/certs/dhparam.pem;
Lưu file khi bạn hoàn tất.
Điều chỉnh cấu hình Nginx để sử dụng SSL
Bây giờ ta đã có các đoạn mã của bạn , ta có thể điều chỉnh cấu hình Nginx của bạn để bật SSL.
Trong hướng dẫn này, ta sẽ giả định bạn đang sử dụng file khối server default
trong folder /etc/nginx/sites-available
. Nếu bạn đang sử dụng một file khối server khác, hãy thay thế tên của nó trong các lệnh bên dưới.
Trước khi tiếp tục, hãy backup file khối server hiện tại của ta :
- sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
Bây giờ, hãy mở file khối server để thực hiện các điều chỉnh:
- sudo nano /etc/nginx/sites-available/default
Bên trong, khối server của bạn có thể bắt đầu như sau:
server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # listen 443 ssl default_server; # listen [::]:443 ssl default_server; . . .
Ta sẽ sửa đổi cấu hình này để các yêu cầu HTTP không được mã hóa tự động được chuyển hướng đến HTTPS được mã hóa. Điều này cung cấp bảo mật tốt nhất cho các trang web của ta . Nếu bạn muốn cho phép cả truy cập HTTP và HTTPS, hãy sử dụng cấu hình thay thế sau.
Ta sẽ chia cấu hình thành hai khối riêng biệt. Sau hai chỉ thị listen
đầu tiên, ta sẽ thêm chỉ thị server_name
, được đặt thành domain của server của bạn. Sau đó, ta sẽ cài đặt chuyển hướng đến khối server thứ hai mà ta sẽ tạo. Sau đó, ta sẽ đóng khối ngắn này:
server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } # SSL configuration # listen 443 ssl default_server; # listen [::]:443 ssl default_server; . . .
Tiếp theo, ta cần khởi động một khối server mới ngay bên dưới để chứa cấu hình còn lại. Ta có thể bỏ ghi chú hai lệnh listen
sử dụng cổng 443. Sau đó, ta chỉ cần đưa vào hai file đoạn mã mà ta đã cài đặt :
Lưu ý: Bạn có thể chỉ có một chỉ thị listen
bao gồm công cụ sửa đổi default_server
cho mỗi version IP và kết hợp cổng. Nếu bạn đã bật các khối server khác cho các cổng này đã đặt default_server
, bạn phải xóa công cụ sửa đổi khỏi một trong các khối.
server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } server { # SSL configuration listen 443 ssl default_server; listen [::]:443 ssl default_server; include snippets/ssl-example.com.conf; include snippets/ssl-params.conf; . . .
Lưu file khi bạn hoàn tất.
(Cấu hình thay thế) Cho phép cả truy cập HTTP và HTTPS
Nếu bạn muốn hoặc cần cho phép cả nội dung được mã hóa và không được mã hóa, bạn sẽ phải cấu hình Nginx hơi khác một chút. Điều này thường không được khuyến khích nếu có thể tránh được, nhưng trong một số trường hợp, nó có thể cần thiết. Về cơ bản, ta chỉ nén hai khối server riêng biệt thành một khối và xóa chuyển hướng:
server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; listen [::]:443 ssl default_server; server_name example.com www.example.com; include snippets/ssl-example.com.conf; include snippets/ssl-params.conf; . . .
Lưu file khi bạn hoàn tất.
Bước 4: Điều chỉnh firewall
Nếu bạn đã bật firewall , bạn cần điều chỉnh cài đặt để cho phép lưu lượng SSL. Quy trình bắt buộc phụ thuộc vào phần mềm firewall bạn đang sử dụng. Nếu hiện tại bạn chưa cấu hình firewall , vui lòng bỏ qua.
UFW
Nếu bạn đang sử dụng ufw , bạn có thể xem cài đặt hiện tại bằng lệnh :
- sudo ufw status
Nó có thể sẽ giống như thế này, nghĩa là chỉ truy cập HTTP được phép đến web server :
OutputStatus: active To Action From -- ------ ---- SSH ALLOW Anywhere WWW ALLOW Anywhere SSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)
Ngoài ra, để cho phép lưu lượng truy cập HTTPS, ta có thể cho phép cấu hình “WWW Đầy đủ” và sau đó xóa phụ cấp cấu hình “WWW” dư thừa:
- sudo ufw allow 'WWW Full'
- sudo ufw delete allow 'WWW'
Trạng thái của bạn bây giờ sẽ như thế này:
- sudo ufw status
OutputStatus: active To Action From -- ------ ---- SSH ALLOW Anywhere WWW Full ALLOW Anywhere SSH (v6) ALLOW Anywhere (v6) WWW Full (v6) ALLOW Anywhere (v6)
Các yêu cầu HTTPS hiện sẽ được server của bạn chấp nhận.
IPTables
Nếu bạn đang sử dụng iptables
, bạn có thể xem các luật hiện tại bằng lệnh :
- sudo iptables -S
Nếu bạn đã bật bất kỳ luật nào, chúng sẽ được hiển thị. Một cấu hình ví dụ có thể trông như thế này:
Output-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Các lệnh cần thiết để mở lưu lượng SSL sẽ phụ thuộc vào các luật hiện tại của bạn. Đối với bộ luật cơ bản như luật ở trên, bạn có thể thêm quyền truy cập SSL bằng lệnh :
- sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Nếu ta xem lại các luật firewall , ta sẽ thấy luật mới:
- sudo iptables -S
Output-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
Nếu bạn đang sử dụng một chương trình để tự động áp dụng các luật iptables
khi khởi động, bạn cần đảm bảo bạn cập nhật cấu hình của bạn với luật mới.
Bước 5: Bật các thay đổi trong Nginx
Bây giờ ta đã áp dụng các thay đổi và điều chỉnh firewall của bạn , ta có thể khởi động lại Nginx để áp dụng các thay đổi mới của bạn .
Trước tiên, ta nên kiểm tra đảm bảo rằng không có lỗi cú pháp nào trong các file của ta . Ta có thể làm điều này bằng lệnh :
- sudo nginx -t
Nếu mọi thứ thành công, bạn sẽ nhận được kết quả như sau:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu kết quả của bạn phù hợp với những điều trên, thì file cấu hình của bạn không có lỗi cú pháp. Ta có thể khởi động lại Nginx một cách an toàn để áp dụng các thay đổi của bạn :
- sudo systemctl restart nginx
Chứng chỉ Let's Encrypt TLS / SSL hiện đã có và firewall hiện cho phép lưu lượng truy cập đến cổng 80 và 443. Đến đây, bạn nên kiểm tra xem certificate TLS / SSL có hoạt động hay không bằng cách truy cập domain của bạn qua HTTPS trong trình duyệt web.
Bạn có thể sử dụng Báo cáo phòng thí nghiệm SSL của Qualys để xem điểm cấu hình server của bạn như thế nào:
In a web browser:https://www.ssllabs.com/ssltest/analyze.html?d=example.com
Quá trình này có thể mất vài phút để hoàn thành. Cài đặt SSL trong hướng dẫn này phải báo cáo ít nhất xếp hạng A.
Bước 6: Cài đặt Tự động gia hạn
Chứng chỉ Let's Encrypt có hiệu lực trong 90 ngày, nhưng bạn nên gia hạn certificate sau mỗi 60 ngày để hạn chế sai sót. Tại thời điểm viết bài này, tính năng tự động gia hạn vẫn không khả dụng như một tính năng của chính ứng dụng client , nhưng bạn có thể gia hạn certificate của bạn theo cách thủ công bằng cách chạy ứng dụng client Let's Encrypt với tùy chọn renew
.
Để kích hoạt quá trình gia hạn cho tất cả các domain đã cài đặt, hãy chạy lệnh sau:
- sudo certbot renew
Bởi vì ta gần đây đã cài đặt certificate , lệnh sẽ chỉ kiểm tra ngày hết hạn và in một thông báo thông báo rằng certificate chưa đến hạn gia hạn. Đầu ra sẽ giống như sau:
Output:Saving debug log to /var/log/letsencrypt/example.com.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/example.com.conf ------------------------------------------------------------------------------- Cert not yet due for renewal The following certs are not due for renewal yet: /etc/letsencrypt/live/example.com/fullchain.pem (skipped) No renewals were attempted.
Lưu ý nếu bạn đã tạo certificate đi kèm với nhiều domain , thì chỉ domain cơ sở mới được hiển thị trong kết quả , nhưng việc gia hạn phải hợp lệ cho tất cả các domain có trong certificate này.
Một cách thực tế đảm bảo certificate của bạn không bị lỗi thời là tạo một công việc cron sẽ thực hiện định kỳ lệnh gia hạn tự động cho bạn. Vì lần gia hạn đầu tiên kiểm tra ngày hết hạn và chỉ thực hiện gia hạn nếu certificate còn chưa đầy 30 ngày nữa là hết hạn, ví dụ: có thể an toàn để tạo một công việc cron chạy hàng tuần hoặc thậm chí hàng ngày.
Hãy chỉnh sửa crontab để tạo một công việc mới sẽ chạy lệnh gia hạn hàng tuần. Để chỉnh sửa crontab cho user root, hãy chạy:
- sudo crontab -e
Nếu đây là lần đầu tiên bạn sử dụng crontab
, bạn có thể được yêu cầu chọn editor ưa thích của bạn . Nếu bạn không có sở thích cao, nano là một lựa chọn dễ dàng.
Thêm các dòng sau:
crontab entry30 2 * * * /usr/bin/certbot renew --noninteractive --renew-hook "/bin/systemctl reload nginx" >> /var/log/le-renew.log
Lưu và thoát. Thao tác này sẽ tạo một công việc cron mới sẽ thực thi lệnh certbot renew
mỗi ngày vào lúc 2:30 sáng và reload Nginx nếu certificate được gia hạn. Đầu ra do lệnh tạo ra sẽ được chuyển đến file log có địa chỉ tại /var/log/le-renewal.log
.
Lưu ý: Để biết thêm thông tin về cách tạo và lập lịch công việc cron, bạn có thể xem Cách sử dụng Cron để tự động hóa công việc trong hướng dẫn VPS .
Kết luận
Đó là nó! Web server của bạn hiện đang sử dụng certificate Let's Encrypt TLS / SSL miễn phí để phân phát nội dung HTTPS một cách an toàn.
Các tin liên quan
Cách cung cấp các ứng dụng Django với uWSGI và Nginx trên Debian 82016-12-19
Cách tạo chuyển hướng tạm thời và vĩnh viễn với Nginx
2016-12-19
Cách thêm module gzip vào Nginx trên Ubuntu 16.04
2016-12-02
Cơ sở hạ tầng SaltStack: Tạo Salt State cho web server Nginx
2016-11-07
Cách thêm module log vào Nginx trên Ubuntu 16.04
2016-10-31
Cách thêm module log vào Nginx trên CentOS 7
2016-10-31
Cách di chuyển web root Nginx đến vị trí mới trên Ubuntu 16.04
2016-07-29
Cách cấu hình Nginx làm web server và reverse-proxy (reverse proxy) cho Apache trên một server Ubuntu 16.04
2016-07-06
Cách thiết lập server block Nginx (server ảo) trên Ubuntu 16.04
2016-05-19
Cách cung cấp các ứng dụng Flask với uWSGI và Nginx trên Ubuntu 16.04
2016-05-19