گواهی TLS در CDN ستون، ارتباط بازدیدکننده تا لبه را رمزنگاری می‌کند. مرورگر نام دامنه را با گواهی که لبه ارایه می‌کند تطبیق می‌دهد. گواهی لبه جدا از گواهی سرور آپ‌استریم است.

صفحه گواهی SSL/TLS در پنل فقط همین ارتباط را تنظیم می‌کند. سه حالت دارد:

حالتچه کسی گواهی را می‌سازدچه زمانی مناسب است
TLS خودکارستون، از Let’s Encryptوقتی تمدید و پوشش زیردامنه یک‌سطحی را ستون انجام دهد
TLS شخصیخود ما، با بارگذاری Secretوقتی به گواهی تجاری، صادرکننده مشخص، یا کلاینت قدیمی نیاز داریم
عدم استفاده از TLSگواهی ارایه نمی‌شودوقتی سایت باید فقط روی HTTP بماند

مراحل پنل در فعال‌سازی TLS خودکار و فعال‌سازی TLS با گواهی شخصی است. فیلدها در مرجع تنظیمات TLS آمده است.


TLS لبه و TLS آپ‌استریم

دو اتصال جدا هستند:

flowchart LR
  client(["بازدیدکننده"])
  edge(["لبه CDN"])
  origin(["آپ‌استریم"])
  client -->|"HTTP یا HTTPS"| edge
  edge -->|"HTTP یا HTTPS"| origin
اتصالگواهیتنظیم
بازدیدکننده تا لبهگواهی خودکار یا شخصی همین صفحهگواهی SSL/TLS
لبه تا آپ‌استریمگواهی روی خود مبدا، در صورت انتخاب HTTPSپروتکل آپ‌استریم

لبه می‌تواند به بازدیدکننده HTTPS بدهد و تا مبدا با HTTP برود. ستون برای آپ‌استریم گواهی صادر نمی‌کند و گواهی مبدا را Verify نمی‌کند؛ گواهی Self-signed هم پذیرفته می‌شود. این رفتار در پنل قابل تغییر نیست. جزییات پروتکل مبدا در آپ‌استریم است.


صدور خودکار

در TLS خودکار، ستون گواهی Let’s Encrypt را می‌سازد و تمدید می‌کند. پنل همیشه درخواست وایلدکارد (Wildcard) ثبت می‌کند. نتیجه به محل DNS بستگی دارد:

  • اگر نام‌سرور دامنه، و هر نام اضافه‌ای که وارد کرده‌ایم، متعلق به ستون باشد و زون در همان فضای کاری باشد، صدور با چالش DNS انجام می‌شود. گواهی شامل خود دامنه و *.example.com است و لازم نیست ترافیک از قبل روی CDN باشد.
  • اگر DNS روی ستون نباشد، صدور به چالش HTTP برمی‌گردد و فقط همان hostname را پوشش می‌دهد. سایت باید از مسیر CDN در دسترس باشد تا چالش تمام شود. تا آماده‌شدن گواهی، دسترسی می‌تواند موقتا قطع شود.

اعمال گواهی روی لبه ممکن است تا ۳۰ دقیقه طول بکشد.

چالش از نام‌های _acme-challenge استفاده می‌کند و رکورد CNAME روی آن‌ها را دنبال نمی‌کند. وجود چنین CNAMEای صدور و تمدید را مختل می‌کند.

در قطع دسترسی به Let’s Encrypt، مثلا هنگام اختلال اینترنت بین‌الملل، تمدید خودکار ممکن است انجام نشود. گواهی شخصی به صادرکننده ستون وابسته نیست و تمدیدش با ماست.


پوشش وایلدکارد (Wildcard)

گواهی *.example.com فقط یک سطح را پوشش می‌دهد:

نامبا *.example.com
example.comروی خود گواهی هست
www.example.comپوشش داده می‌شود
api.v2.example.comپوشش داده نمی‌شود

برای سطح بعدی، در TLS خودکار آن زیردامنه را بدون ستاره اضافه می‌کنیم. مثلا v2.example.com باعث می‌شود *.v2.example.com هم در گواهی بیاید و api.v2.example.com پوشش داده شود. حداکثر ۱۰ نام اضافه مجاز است و هر کدام باید زیردامنه همان hostname باشد.

گواهی شخصی هر نامی را پوشش می‌دهد که موقع خرید داخل آن بوده باشد؛ وایلدکارد (Wildcard)بودن آن به صادرکننده گواهی بستگی دارد.


هدایت HTTP و HSTS

گزینه همه درخواست‌های HTTP به‌طور خودکار به HTTPS هدایت شوند. دو اثر دارد:

  • درخواست HTTP با 301 به همان مسیر روی HTTPS می‌رود.
  • پاسخ HTTPS هدر Strict-Transport-Security: max-age=31536000 می‌گیرد؛ مرورگر تا یک سال آن میزبان را مستقیم با HTTPS باز می‌کند.

اگر این گزینه خاموش باشد، HTTP به HTTPS هدایت نمی‌شود و روی پاسخ HTTPS مقدار max-age=0 فرستاده می‌شود.

اگر مبدا هم HTTP را به HTTPS هدایت کند و پروتکل آپ‌استریم HTTP باشد، این هدایت با ریدایرکت مبدا حلقه می‌سازد.


حداقل نسخه TLS

لبه دست‌دهی‌ای را که از حداقل ورژن TLS پایین‌تر باشد رد می‌کند. مقدارهای قابل انتخاب TLSv1، TLSv1.1، TLSv1.2 و TLSv1.3 هستند. هنگام ساخت وب‌سایت، پیش‌فرض TLSv1.2 است.

نسخه پروتکل با اعتماد به صادرکننده فرق دارد. اندروید قدیمی‌تر از ۷.۱.۱ ریشه Let’s Encrypt را نمی‌شناسد، حتی اگر TLSv1.2 را پشتیبانی کند. برای آن کلاینت‌ها گواهی تجاری را در فعال‌سازی TLS با گواهی شخصی می‌گذاریم؛ به شرطی که مرجع آن گواهی در اعتماد همان دستگاه باشد.


ادامه مسیر