Установка бесплатного SSL-сертификата (A-grade) Let's Encrypt на nginx (Ubuntu 16.04)
Mục lục:
- Điều kiện tiên quyết
- Cài đặt Certbot
- Tạo nhóm Strong Dh (Diffie-Hellman)
- Nhận chứng chỉ SSL Hãy mã hóa
- Tự động gia hạn chứng chỉ SSL
- Phần kết luận
Let Encrypt là một tổ chức chứng nhận mở và miễn phí được phát triển bởi Nhóm nghiên cứu bảo mật Internet (ISRG). Chứng chỉ được cấp bởi Let Encrypt được hầu hết các trình duyệt tin cậy ngày nay.
Trong hướng dẫn này, chúng tôi sẽ cung cấp hướng dẫn từng bước về cách bảo mật Nginx của bạn với Let Encrypt bằng công cụ certbot trên Ubuntu 16.04.
Điều kiện tiên quyết
Hãy chắc chắn rằng bạn đã đáp ứng các điều kiện tiên quyết sau đây trước khi tiếp tục với hướng dẫn này:
- Bạn có một tên miền trỏ đến IP máy chủ công cộng của bạn. Trong hướng dẫn này, chúng tôi sẽ sử dụng
example.com. Bạn đã cài đặt Nginx bằng cách làm theo Cách cài đặt Nginx trên Ubuntu 16.04.
Cài đặt Certbot
Certbot là một tiện ích được viết bằng python có thể tự động hóa các tác vụ để lấy và gia hạn chứng chỉ SSL Encrypt SSL và định cấu hình máy chủ web.
Trước tiên, cài đặt gói
software-properties-common
phần mềm cung cấp công cụ
add-apt-repository
bổ sung cần thiết để thêm PPA bổ sung.
Cập nhật chỉ mục gói và cài đặt
software-properties-common
với:
sudo apt update
sudo apt install software-properties-common
Sau khi cài đặt hoàn tất, hãy thêm kho lưu trữ certbot PPA vào hệ thống của bạn bằng lệnh sau:
sudo add-apt-repository ppa:certbot/certbot
Cập nhật danh sách các gói và cài đặt gói certbot:
sudo apt update
sudo apt install certbot
Tạo nhóm Strong Dh (Diffie-Hellman)
Trao đổi khóa Diffieifer Hellman (DH) là một phương pháp trao đổi khóa mật mã an toàn qua một kênh liên lạc không bảo mật. Tạo một bộ tham số DH 2048 bit mới để tăng cường bảo mật:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Nếu bạn thích, bạn có thể thay đổi kích thước lên tới 4096 bit, nhưng trong trường hợp đó, việc tạo có thể mất hơn 30 phút tùy thuộc vào entropy của hệ thống.
Nhận chứng chỉ SSL Hãy mã hóa
Để có được chứng chỉ SSL cho miền của chúng tôi, chúng tôi sẽ sử dụng plugin Webroot hoạt động bằng cách tạo một tệp tạm thời để xác thực tên miền được yêu cầu trong thư mục
${webroot-path}/.well-known/acme-challenge
. Máy chủ Let Encrypt tạo các yêu cầu HTTP đến tệp tạm thời để xác thực rằng miền được yêu cầu phân giải đến máy chủ nơi certbot chạy.
Để đơn giản hơn, chúng tôi sẽ ánh xạ tất cả các yêu cầu HTTP cho
.well-known/acme-challenge
vào một thư mục duy nhất,
/var/lib/letsencrypt
.
Các lệnh sau sẽ tạo thư mục và làm cho nó có thể ghi cho máy chủ Nginx.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
Để tránh trùng lặp mã, hãy tạo hai đoạn mã sau mà chúng tôi sẽ đưa vào tất cả các tệp khối máy chủ Nginx của chúng tôi.
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Đoạn trích ở trên bao gồm các chương trình giới thiệu của Mozilla, cho phép OCSP Stapling, HTTP Strict Transport Security (HSTS) và thực thi một số tiêu đề HTTP tập trung vào bảo mật.
Khi đoạn mã được tạo, hãy mở khối máy chủ tên miền và bao gồm đoạn mã
letsencrypt.conf
như dưới đây:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Kích hoạt khối máy chủ bằng cách tạo một liên kết tượng trưng từ
sites-available
đến
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Tải lại cấu hình Nginx để các thay đổi có hiệu lực:
sudo systemctl reload nginx
Chạy tập lệnh certbot với plugin webroot và lấy các tệp chứng chỉ SSL:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Nếu chứng nhận SSL được lấy thành công, certbot sẽ in thông báo sau:
IMPORTANT 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 2018-04-23. 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 like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
Bây giờ chúng ta có các tệp chứng chỉ, chỉnh sửa khối máy chủ tên miền như sau:
/etc/nginx/sites-av Available / example.com
server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }
Với cấu hình ở trên, chúng tôi đang buộc HTTPS và chuyển hướng phiên bản
www
của tên miền sang phiên bản
non www
.
Tải lại dịch vụ Nginx để các thay đổi có hiệu lực:
Tự động gia hạn chứng chỉ SSL
Chứng chỉ của Encrypt có hiệu lực trong 90 ngày. Để tự động gia hạn chứng chỉ trước khi chúng hết hạn, gói certbot tạo ra một cronjob sẽ chạy hai lần một ngày và sẽ tự động gia hạn bất kỳ chứng chỉ nào 30 ngày trước khi hết hạn.
Vì chúng tôi đang sử dụng trình cắm webrobot certbot sau khi chứng chỉ được gia hạn, chúng tôi cũng phải tải lại dịch vụ nginx. Để làm như vậy, hãy thêm
--renew-hook "systemctl reload nginx"
vào tệp
/etc/cron.d/certbot
để nó trông như thế này:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"
Để kiểm tra quá trình gia hạn, hãy sử dụng công tắc certbot
--dry-run
:
sudo certbot renew --dry-run
Nếu không có lỗi, điều đó có nghĩa là quá trình gia hạn đã thành công.
Phần kết luận
Trong hướng dẫn này, bạn đã sử dụng ứng dụng khách Encrypt, certbot để lấy chứng chỉ SSL cho miền của mình. Bạn cũng đã tạo các đoạn mã Nginx để tránh sao chép mã và cấu hình Nginx để sử dụng chứng chỉ. Vào cuối hướng dẫn, bạn đã thiết lập một cronjob để gia hạn chứng chỉ tự động.
nginx ubfox hãy mã hóa certbot sslDanh mục sản phẩm của Utimaco bao gồm dòng SafeGuard, bao gồm hơn một chục sản phẩm kinh doanh với các khía cạnh bảo mật dữ liệu như quản lý các khoá mã hoá, mã hóa thư điện tử và bảo vệ dữ liệu trên các thiết bị di động.
Nó cũng bán phần mềm cho phép các nhà khai thác di động cung cấp dữ liệu cho các cơ quan thực thi pháp luật cho các vụ án khủng bố hoặc các vụ tố tụng hình sự khác. Utimaco gọi đó là "Quản lý ngăn chặn hợp pháp".
Chỉ một phần ba số thông tin nhạy cảm được lưu trữ trên máy tính xách tay của chính phủ Hoa Kỳ và các thiết bị di động, bao gồm thông tin cá nhân của người dân Hoa Kỳ, đã được mã hóa một năm trước, mặc dù hàng loạt vụ vi phạm dữ liệu tại các cơ quan chính phủ trong những năm gần đây, Báo cáo của Văn phòng Giải trình Trách nhiệm Chính phủ Hoa Kỳ cho thấy 70% thông tin nhạy cảm được lưu giữ trên máy tính xách tay và các thiết bị di động tại 24 cơ quan lớn của Hoa Kỳ đã không được mã hóa kể từ thán
Báo cáo theo dõi hàng loạt những rủi ro về an ninh của các cơ quan chính phủ Hoa Kỳ trong những năm gần đây. Tháng 3 năm 2007, Cơ quan Dịch vụ Thu nội địa của Hoa Kỳ báo cáo rằng 490 máy tính xách tay đã bị mất tích hoặc bị mất cắp trong một khoảng thời gian ba năm. Vào tháng 9 năm 2006, Bộ Thương mại Hoa Kỳ đã báo cáo rằng 1.137 máy tính xách tay bị mất hoặc bị đánh cắp từ năm 2001, trong đó có 249 máy tính xách tay có chứa một số dữ liệu cá nhân. Vào tháng 5 năm 2006, Bộ Cựu chiến binh báo cáo
Microsoft Bao gồm các vấn đề cơ bản với phần mềm bảo mật mới. Phần mềm bảo mật mới của Microsoft loại bỏ các chuông và còi cồng kềnh được tìm thấy trong các sản phẩm khác. phần mềm chống vi-rút, Microsoft Security Essentials (MSE). Như tên gọi của nó, phần mềm bảo mật mới của Microsoft loại bỏ các chuông và còi cồng kềnh được tìm thấy trong các sản phẩm khác, như Windows Live OneCare đã ngừng hoạt động của Microsoft và chỉ cung cấp sự bảo vệ cần thiết. có thể là tất cả những gì cần thiết. Window
Các nhà cung cấp bảo mật bên thứ ba đã xếp hàng để xen kẽ MSE là không đủ và slam Microsoft để ném trọng lượng độc quyền của nó xung quanh. Họ không thể thực sự có cả hai cách. Microsoft đã tạo ra một sản phẩm tốt và sự thống trị của nó đối với hệ điều hành PC là mối đe dọa cho ngành công nghiệp phần mềm bảo mật, hoặc MSE hút và họ không có gì phải lo lắng.







