पृथà¥?वी पर सà¥?थित à¤à¤¯à¤¾à¤¨à¤• नरक मंदिर | Amazing H
สารบัญ:
- ข้อกำหนดเบื้องต้น
- ติดตั้ง Certbot
- สร้างกลุ่ม Strong Dh (Diffie-Hellman)
- รับใบรับรอง Let's Encrypt SSL
- ต่ออายุการเข้ารหัสโดยอัตโนมัติขอใบรับรอง SSL
- ข้อสรุป
Let's Encrypt เป็นผู้ออกใบรับรองที่เปิดกว้างฟรีที่ได้รับการพัฒนาโดย Internet Security Research Group (ISRG) ใบรับรองที่ออกโดย Let's Encrypt นั้นได้รับความไว้วางใจจากเบราว์เซอร์เกือบทั้งหมดในปัจจุบัน
ในบทช่วยสอนนี้เราจะให้คำแนะนำทีละขั้นตอนเกี่ยวกับการรักษาความปลอดภัย Nginx ของคุณด้วย Let's Encrypt โดยใช้เครื่องมือ certbot บน Ubuntu 18.04
ข้อกำหนดเบื้องต้น
ตรวจสอบให้แน่ใจว่าคุณได้ทำตามข้อกำหนดเบื้องต้นต่อไปนี้ก่อนที่จะดำเนินการกับบทช่วยสอนนี้:
- คุณมีชื่อโดเมนที่ชี้ไปที่ IP เซิร์ฟเวอร์สาธารณะของคุณ ในบทช่วยสอนนี้เราจะใช้
example.com
คุณมี Nginx ติดตั้งโดยทำตามคำแนะนำเหล่านี้คุณมีบล็อกเซิร์ฟเวอร์สำหรับโดเมนของคุณ คุณสามารถทำตามคำแนะนำเหล่านี้สำหรับรายละเอียดเกี่ยวกับวิธีการสร้าง
ติดตั้ง Certbot
Certbot เป็นเครื่องมือที่มีคุณลักษณะครบถ้วนและใช้งานง่ายซึ่งสามารถทำงานอัตโนมัติเพื่อรับและต่ออายุ Let's Encrypt SSL certificate และกำหนดค่าเว็บเซิร์ฟเวอร์เพื่อใช้ใบรับรอง แพคเกจ certbot รวมอยู่ในที่เก็บเริ่มต้นของ Ubuntu
อัพเดตรายการแพ็กเกจและติดตั้งแพ็กเกจ certbot:
sudo apt update
sudo apt install certbot
สร้างกลุ่ม Strong Dh (Diffie-Hellman)
การแลกเปลี่ยนคีย์ Diffie – Hellman (DH) เป็นวิธีการแลกเปลี่ยนคีย์เข้ารหัสลับอย่างปลอดภัยผ่านช่องทางการสื่อสารที่ไม่ปลอดภัย เราจะสร้างพารามิเตอร์ DH 2048 บิตใหม่เพื่อเสริมความปลอดภัย:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
หากคุณชอบคุณสามารถเปลี่ยนขนาดได้สูงสุด 4096 บิต แต่ในกรณีนี้การสร้างอาจใช้เวลามากกว่า 30 นาทีขึ้นอยู่กับเอนโทรปีของระบบ
รับใบรับรอง Let's Encrypt SSL
ในการรับใบรับรอง SSL สำหรับโดเมนของเราเราจะใช้ปลั๊กอิน Webroot ที่ทำงานโดยการสร้างไฟล์ชั่วคราวสำหรับการตรวจสอบโดเมนที่ร้องขอใน
${webroot-path}/.well-known/acme-challenge
ไดเรกทอรีที่
${webroot-path}/.well-known/acme-challenge
เซิร์ฟเวอร์ Let's Encrypt ส่งคำขอ HTTP ไปยังไฟล์ชั่วคราวเพื่อตรวจสอบว่าโดเมนที่ร้องขอแก้ไขไปยังเซิร์ฟเวอร์ที่ Certbot ทำงานอยู่
เพื่อให้ง่ายขึ้นเราจะทำแผนที่คำขอ HTTP ทั้งหมดสำหรับ
.well-known/acme-challenge
ไปยังไดเรกทอรีเดียว
/var/lib/letsencrypt
คำสั่งต่อไปนี้จะสร้างไดเรกทอรีและทำให้สามารถเขียนได้สำหรับเซิร์ฟเวอร์ Nginx
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
เพื่อหลีกเลี่ยงรหัสที่ซ้ำกันให้สร้างตัวอย่างสองรายการต่อไปนี้ซึ่งเราจะรวมไว้ในไฟล์บล็อกเซิร์ฟเวอร์ Nginx ทั้งหมดของเรา
เปิดโปรแกรมแก้ไขข้อความของคุณและสร้างตัวอย่างแรก
letsencrypt.conf
:
sudo nano /etc/nginx/snippets/letsencrypt.conf
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
สร้างส่วนย่อยที่สอง
ssl.conf
ซึ่งรวมถึงตัวย่อยที่แนะนำโดย Mozilla, เปิดใช้งาน OCSP Stapling, HTTP Strict Transport Security (HSTS) และบังคับใช้ส่วนหัว HTTP HTTP ที่เน้นความปลอดภัยเล็กน้อย
sudo nano /etc/nginx/snippets/ssl.conf
/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;
เมื่อสร้างสนิปเพตแล้วให้เปิดบล็อกเซิร์ฟเวอร์โดเมนและรวม
letsencrypt.conf
ตามที่แสดงด้านล่าง:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
ในการเปิดใช้งานไฟล์บล็อกเซิร์ฟเวอร์ใหม่เราจำเป็นต้องสร้างลิงก์สัญลักษณ์จากไฟล์ไปยังไดเรกทอรีที่
sites-enabled
ซึ่ง Nginx อ่านในระหว่างการเริ่มต้น:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
เริ่มบริการ Nginx เพื่อให้การเปลี่ยนแปลงมีผล:
sudo systemctl restart nginx
ตอนนี้คุณสามารถเรียกใช้ Certbot ด้วยปลั๊กอิน webroot และรับไฟล์ใบรับรอง SSL โดยการออก:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
หากได้รับใบรับรอง SSL เรียบร้อยแล้ว certbot จะพิมพ์ข้อความต่อไปนี้:
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-07-28. 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" - 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:
ตอนนี้คุณมีไฟล์ใบรับรองแล้วคุณสามารถแก้ไขบล็อกเซิร์ฟเวอร์โดเมนได้ดังนี้:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-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 }
ด้วยการกำหนดค่าข้างต้นเรากำลังบังคับใช้ HTTPS และเปลี่ยนเส้นทางจาก www เป็นรุ่นที่ไม่ใช่ www
โหลดบริการ Nginx อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล:
ต่ออายุการเข้ารหัสโดยอัตโนมัติขอใบรับรอง SSL
ใบรับรองของ Encrypt นั้นมีอายุ 90 วัน หากต้องการต่ออายุใบรับรองโดยอัตโนมัติก่อนที่จะหมดอายุแพ็คเกจ certbot จะสร้าง cronjob ซึ่งจะทำงานสองครั้งต่อวันและจะต่ออายุใบรับรองใด ๆ โดยอัตโนมัติ 30 วันก่อนหมดอายุ
เนื่องจากเราใช้ปลั๊กอินเว็บรูท certbot เมื่อมีการต่ออายุใบรับรองเราจึงต้องโหลดบริการ nginx อีกครั้ง ผนวก
--renew-hook "systemctl reload nginx"
ไปยังไฟล์
/etc/cron.d/certbot
เพื่อให้มีลักษณะดังนี้:
sudo nano /etc/cron.d/certbot
/etc/cron.d/certbot
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"
ในการทดสอบกระบวนการต่ออายุคุณสามารถใช้สวิตช์
--dry-run
:
sudo certbot renew --dry-run
หากไม่มีข้อผิดพลาดแสดงว่ากระบวนการต่ออายุสำเร็จ
ข้อสรุป
ในบทช่วยสอนนี้คุณใช้ไคลเอนต์ Let's Encrypt, certbot เพื่อดาวน์โหลดใบรับรอง SSL สำหรับโดเมนของคุณ คุณได้สร้างตัวอย่าง Nginx เพื่อหลีกเลี่ยงการทำซ้ำรหัสและกำหนดค่า Nginx ให้ใช้ใบรับรอง ในตอนท้ายของบทช่วยสอนคุณได้ตั้งค่า cronjob สำหรับการต่ออายุใบรับรองอัตโนมัติ
nginx อูบุนตูลองเข้ารหัส certbot sslโพสต์นี้เป็นส่วนหนึ่งของซีรี่ส์ How-to-install-lemp-stack-on-ubuntu-18-04
โพสต์อื่น ๆ ในชุดนี้:
•วิธีการติดตั้ง Nginx บน Ubuntu 18.04 •วิธีการตั้งค่า Nginx เซิร์ฟเวอร์บล็อกบน Ubuntu 18.04 •รักษาความปลอดภัย Nginx ด้วย Let's Encrypt บน Ubuntu 18.04 •วิธีการติดตั้ง MySQL บน Ubuntu 18.04 •วิธีการติดตั้ง PHP บน Ubuntu 18.04รักษาความปลอดภัย nginx ด้วย Let's เข้ารหัสบน Ubuntu 16.04

ในบทช่วยสอนนี้เราจะให้คำแนะนำทีละขั้นตอนเกี่ยวกับการรักษาความปลอดภัย Nginx ของคุณด้วย Let's Encrypt โดยใช้เครื่องมือ certbot บน Ubuntu 16.04
การรักษาความปลอดภัย Apache ด้วย Let's เข้ารหัสบน Ubuntu 18.04

ในบทช่วยสอนนี้เราจะให้คำแนะนำทีละขั้นตอนเกี่ยวกับการรักษาความปลอดภัย Apache ของคุณด้วย Let's Encrypt โดยใช้เครื่องมือ certbot บน Ubuntu 18.04
Secure nginx ด้วย Let's เข้ารหัสบน debian 10 linux

บทช่วยสอนนี้แสดงวิธีการติดตั้งใบรับรอง Let's Encrypt SSL ฟรีบน Debian 10, Buster ที่ใช้ Nginx เป็นเว็บเซิร์ฟเวอร์ นอกจากนี้เราจะแสดงวิธีกำหนดค่า Nginx ให้ใช้ใบรับรอง SSL และเปิดใช้งาน HTTP / 2