برای تمدید گواهی SSL دامنه در کوبرنتیز، ابتدا باید بدانیم که کوبرنتیز چگونه از گواهی‌های SSL استفاده می‌کند. معمولاً این گواهی‌ها در قالب یک Secret از نوع kubernetes.io/tls ذخیره می‌شوند و در پادها Pods، اینگِرس‌ها Ingresses یا سرویس‌ها مورد استفاده قرار می‌گیرند تا ارتباطات امن HTTPS را برقرار کنند.

گواهی SSL چیست؟

SSL یا TLS یک پروتکل رمزنگاری برای امن‌سازی ارتباط بین کلاینت (مثلاً مرورگر) و سرور است. گواهی‌نامه‌ی SSL نشان‌دهنده‌ی مالکیت دامنه و کلید عمومی برای رمزنگاری است.

نقش کوبرنتیز در مدیریت SSL

کوبرنتیز خودش به‌صورت مستقیم گواهی صادر نمی‌کند. اما می‌تواند از ابزارهایی مانند Cert-Manager یا اسکریپت‌های خودکار برای مدیریت و تمدید گواهی‌ها استفاده کند.

زمانی که گواهی جدید صادر می‌شود (برای مثال توسط Let's Encrypt)، فایل‌های .crt و.key آن باید به‌عنوان یک Secret در کوبرنتیز آپدیت یا جایگزین شوند.

تمدید دستی یا خودکار

خودکار: استفاده از ابزار Cert-Manager که با Let's Encrypt ادغام شده و به‌طور خودکار گواهی‌ها را تمدید می‌کند و Secrets را به‌روزرسانی می‌کند.

دستی: دریافت گواهی جدید، ساخت Secret جدید با دستور kubectl create secret tls و سپس بروزرسانی منابعی مثل Ingress انجام پذیر است.

ما در این نوشته مراحل تمدید دستی که برای ssl های خریداری شده و بلند مدت هستند را توضیح می دهیم.

برای تمدید گواهی، دو فایل private.key و fullchain.cer باید تأمین شده باشند. پیش فرض این است گواهی خریداری شده و فایل های private، chain وrootCAدر اختیار می باشد. پس فایلfullchain.cer` تولید و مراحل بعدی انجام می شود.

در ادامه می توان با استفاده از دستورات زیر، از صحت گواهی خریداری شده، اطمینان حاصل نمود:

openssl rsa -noout -modulus -in example.com.key | openssl md5

برای کلید خصوصی و

openssl x509 -noout -modulus -in fullchain.cer | openssl md5

برای کلید عمومی استفاده می شود. اگر هش خروجی هر دو دستور یکسان باشد، گواهی ssl درست می باشد.

تمدید گواهی ssl در کوبرنتیز

ابتدا لازم است تا کلید قبلی که تاریخ آن در حال اتمام است از سکرت های کوبرنتیز پاک شود:

kubectl delete secret tls_secret -n your-namespace

سپس گواهی جدید به کوبرنتیز اعمال شود:

k create secret tls domain.com-tls -n your-namespace --cert=fullchain.cer --key=domain.com.key --dry-run=client -o yaml | k apply -n your-namespace -f -

منابع

برچسب ها: tips kubernetes ssl k8s tls