WIUNIX ACADEMY
آموزش راهاندازی Traefik با Let’s Encrypt و HTTP/3 در اوبونتو و دبیان
صفحهٔ 4 از 6؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من11 مقدار قابلتغییر
قدم بعدی
پس از موفقیت staging به CA واقعی بروید
تا DNS، فایروال و صدور staging درست نشدهاند، جلو نروید. ابتدا از YAML آزمایشی کپی بگیرید و آن را در ویرایشگر باز کنید. فقط caServer و storage را مطابق قطعهٔ بعد به مقصد واقعی و فایل جدا تغییر دهید؛ بقیهٔ تنظیمات و ایمیل تأییدشدهٔ احتمالی را نگه دارید. JSON حساب آزمایشی را به production کپی یا تغییرنام ندهید و فایل واقعی موجود را خالی نکنید. صدور عمومی محدودیت تعداد و شرایط مشترک دارد؛ این راهنما پذیرش قرارداد را از طرف شما خودکار نمیکند.
سرور لینوکسی اختصاصی
sudo cp -a --no-clobber '/etc/traefik-academy/traefik.yml' '/etc/traefik-academy/traefik-staging.yml.saved'
sudoedit '/etc/traefik-academy/traefik.yml'
ویرایشگر باز است و نسخهٔ تنظیمات staging حفظ شده است.
فقط جایگزین بخش resolver واقعی
قطعهٔ فایل: فقط کل بلوک certificatesResolvers را با این بخش جایگزین کنید؛ entrypointها، provider، API و log فایل قبلی باقی میمانند. اگر ایمیل تماس تأییدشده افزودهاید، کلید email را زیر acme در این جایگزین هم نگه دارید. وضعیت staging و production جداست. مدت پیشفرض ۹۰روزه در تاریخ این بررسی با production همخوان است، اما طول عمر گواهی را همیشگی فرض نکنید؛ با تغییر profile یا مدت اعتبار، تنظیم تمدید Traefik و راهنمای CA را دوباره بررسی کنید.
certificatesResolvers:
le:
acme:
caServer: "https://acme-v02.api.letsencrypt.org/directory"
storage: "/var/lib/traefik-academy/acme-production.json"
httpChallenge:
entryPoint: web
قدم بعدی
TLS معتبر و پاسخ دقیق را الزام کنید
پس از تغییر تنظیم ثابت، فقط همین پروکسی را ریاستارت کنید. بررسیهای کلاینت بیرونی را بعد از اتمام صدور انجام دهید؛ گواهی پیشفرض موقت نشانهٔ موفقیت نیست. اعتبارسنجی زنجیره و نام دامنه باید با ریشههای معمول سیستم موفق شود. صادرکننده و انقضای واقعی را برای مانیتورینگ ثبت کنید. از این مرحله به بعد --insecure در بررسیها وجود ندارد.
سرور لینوکسی اختصاصی
sudo systemctl restart traefik-academy.service
sudo journalctl -u traefik-academy.service --since '5 minutes ago' --no-pager
پروکسی فعال و صدور واقعی بدون خطاست؛ بررسی مستقل کلاینت را هم انجام دهید.
قدم بعدی
کنترل گواهی از دستگاه مستقل
روی کلاینت لینوکسی با ریشههای CA بهروز اجرا کنید. متن دقیق فایل، کد تأیید صفر، SAN دامنه و صادرکنندهٔ واقعی لازماند. پاسخ 200 با دورزدن اعتبارسنجی کافی نیست. اگر curl کلاینت HTTP/2 ندارد، ابتدا درخواست معتبر معمول را بررسی کنید و آزمون پروتکل را با کلاینت سازگار انجام دهید.
کلاینت لینوکسی مستقل خارج از سرور
curl --fail --silent --show-error --noproxy '*' 'https://app.example.com/health.txt'
openssl s_client -connect 'app.example.com:443' -servername 'app.example.com' -verify_hostname 'app.example.com' -verify_return_error </dev/null
curl --version
curl --http2 --fail --silent --show-error --noproxy '*' --output /dev/null --write-out 'HTTP version: %{http_version}\n' 'https://app.example.com/health.txt'
پاسخ دقیق با TLS معتبر، بدون خطای گواهی و مذاکرهٔ HTTP/2 روی کلاینت سازگار.
قدم بعدی
HTTP/3 را واقعاً آزمایش کنید
HTTP/3 به کلاینتی نیاز دارد که HTTP3 در Features نسخهٔ curl آن دیده شود و UDP/443 در تمام مسیر باز باشد. curl پیشفرض هر توزیع الزاماً این قابلیت را ندارد؛ در این راهنما جایگزینی بستهٔ نامطمئن پیشنهاد نمیشود. از کلاینت تأییدشدهٔ سازگار یا Network مرورگر با نمایش h3 استفاده کنید. Alt-Svc فقط اعلان قابلیت است و موفقیت درخواست QUIC را ثابت نمیکند. --http3-only جلوی fallback پنهان را میگیرد؛ درخواست آخر هم مسیر TCP را جدا کنترل میکند. برای رفع خطا اعتبارسنجی گواهی را خاموش نکنید.
کلاینت مستقل با پشتیبانی HTTP/3
curl --version
curl --silent --show-error --head --noproxy '*' 'https://app.example.com/health.txt'
curl --http3-only --fail --silent --show-error --noproxy '*' --write-out '
HTTP version: %{http_version}
' 'https://app.example.com/health.txt'
curl --http1.1 --fail --silent --show-error --noproxy '*' 'https://app.example.com/health.txt'
کلاینت سازگار پاسخ دقیق را با نسخهٔ HTTP برابر 3 میگیرد و درخواست معتبر TCP هم موفق است.
قدم بعدی
داشبورد را از تونل SSH ببینید
تونل را روی کامپیوتر خود با هویت SSH و کلید میزبان از پیش تأییدشده باز کنید. سمت کلاینت فقط به 127.0.0.1:8080 متصل میشود؛ پورت محلی باید آزاد باشد یا تنظیم پورت مدیریت را یکدست تغییر دهید. ترمینال را باز نگه دارید و نشانی محلی داشبورد را با اسلش انتهایی در مرورگر ببینید. API در اختیار میزبان و کاربران مجاز تونل است؛ پردازهها و کاربران محلی دیگر هم به loopback دسترسی دارند، پس خود میزبان باید قابل اعتماد باشد. این endpoint را عمومی نکنید و api.insecure را روشن نکنید.
ترمینال و مرورگر کامپیوتر شما
ssh -p 22 -N -o ExitOnForwardFailure=yes -L 127.0.0.1:8080:127.0.0.1:8080 admin@203.0.113.10
تونل فقط روی loopback کلاینت باز است و روت داشبورد و app@file فعال دیده میشوند.