bg-tutorials

كيفية تثبيت شهادة ACME SSL في Kubernetes

أصبح تثبيت شهادة ACME SSL في Kubernetes الآن عملية موحدة ومرنة بفضل الأدوات الناضجة مثل مدير الشهادات والدعم الواسع من المراجع المصدقة التجارية. سواء كنت تقوم بتشغيل أعباء عمل الإنتاج خلف NGINX Ingress أو Traefik أو بوابة أخرى، يمكنك أتمتة HTTPS الآمن مع التحكم الكامل.

تثبيت ACME SSL على Kubernetes

سيوضح لك هذا الدليل كيفية تثبيت شهادة ACME SSL في Kubernetes باستخدام مدير الشهادات. سنغطي التثبيت، وإعداد جهة إصدار مع ربط الحساب الخارجي (EAB)، وإصدار الشهادات لحماية خدمات الدخول الخاصة بك.


ما ستحتاج إليه

قبل الغوص، تأكد من

  • لديك مجموعة Kubernetes عاملة (يوصى باستخدام الإصدار 1.23+)
  • kubectl تم تكوينه ويعمل
  • لديك حق الوصول إلى وحدة التحكم في الدخول (على سبيل المثال، NGINX، Traefik)
  • يشير المجال الخاص بك إلى عنوان IP العام لوحدة التحكم في الدخول
  • لديك بيانات اعتماد EAB من المرجع المصدق المتوافق مع ACME:
    • عنوان URL لدليل ACME (على سبيل المثال https://acme.example.com/v2/DV)
    • معرّف مفتاح EAB (KID)
    • مفتاح EAB HMAC

ملاحظة: يتم استخدام https://acme.example.com/v2/DV في جميع أنحاء هذا الدليل كعنصر نائب لعنوان URL لدليل ACME. استبدله بنقطة النهاية الحقيقية من المرجع المصدق الخاص بك.


الخطوة 1 – تثبيت مدير الشهادات

cert-manager هو عميل ACME الأصلي الأكثر استخدامًا على نطاق واسع في Kubernetes. وهو يعمل كوحدة تحكم تدير إصدار الشهادات وتجديدها.

التثبيت عبر Helm (مفضل للإنتاج):

kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true

انتظر بضع ثوانٍ وتأكد من تشغيل جميع الكبسولات:

kubectl get pods -n cert-manager

يجب أن ترى ثلاث كبسولات: مدير الشهادات، ومدير الشهادات-مدير الشهادات، ومدير الشهادات-خطاف الشهادات، ومدير الشهادات-مستخرج الشهادات.


الخطوة 2 – إنشاء سر Kubernetes لبيانات اعتماد EAB

قم بإنشاء سر Kubernetes لتخزين مفتاح EAB الخاص بك بشكل آمن:

kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"

استبدلها بأوراق اعتمادك الفعلية. تجنب نسخ ولصق المسافات البيضاء.


الخطوة 3 – تعريف المُصدر أو المُصدر العنقودي

والآن، قم بإنشاء مورد ClusterIssuer (لجميع مساحات الأسماء) أو مُصدر (مساحة اسم واحدة) الذي يربط مدير الشهادات بـ ACME CA باستخدام بيانات اعتماد EAB.

إليك نموذج YAML من ClusterIssuer:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx

قم بتطبيقه:

kubectl apply -f clusterissuer.yaml

استبدل ingress.class: nginx بـ traefik أو nginx-international أو أيًا كانت فئة الدخول الخاصة بك. يمكنك العثور على هذا في وثائق وحدة تحكم الدخول الخاصة بك.


الخطوة 4 – إنشاء مورد شهادة

بمجرد أن يصبح ClusterIssuer الخاص بك جاهزًا، قم بإنشاء مورد شهادة يخبر مدير الشهادات بالمجال الذي يجب تأمينه. إليك مثالاً على ذلك:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com

قم بتطبيقه:

kubectl apply -f certificate.yaml

سيستخدم مدير الشهادات مُصدر الشهادة، ويحل التحدي عبر الدخول، ويخزن الشهادة الصادرة كسرّ Kubernetes TLS.


الخطوة 5 – الإشارة إلى الشهادة في دخولك

قم بتحديث قاعدة الدخول لاستخدام الشهادة التي تم إنشاؤها:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80

قم بتطبيقه:

kubectl تطبيق -f ingress.yaml

بمجرد أن يكتشف مدير الشهادات الشرح، سيبدأ في حل تحدي ACME وإصدار شهادتك.


الخطوة 6 – التحقق من الشهادة والتجديد التلقائي

للتحقق من أن كل شيء يعمل:

kubectl وصف شهادة kubectl-ssl-cert الخاصة بي

ابحث عن الشهادة الصادرة بنجاح.

للتحقق من إعداد التجديد، قم بتشغيل:

kubectl get certificaterequests

يتعامل مدير الشهادات مع التجديد تلقائيًا قبل 30 يومًا تقريبًا من انتهاء الصلاحية. يمكنك محاكاة التجديد على هذا النحو:

kubectl cert-manager renew my-ssl-cert


الأسئلة الشائعة

يمكن أن يبدو إعداد ACME SSL في Kubernetes أمرًا تجريديًا بعض الشيء، خاصةً عند التلاعب بوحدات التحكم في الدخول والأسرار وسجلات DNS. فيما يلي، نجيب على بعض الأسئلة الشائعة التي يواجهها المطورون عند تثبيت شهادات ACME في بيئة Kubernetes، سواء كنت تستخدم مدير الشهادات أو إعدادًا بديلًا.

هل يمكنني استخدام DNS-01 بدلاً من HTTP-01؟

نعم، يدعم مدير الشهادات التحقق من صحة DNS مع موفري خدمات مثل Cloudflare و AWS و Google Cloud DNS. استخدمه إذا كنت لا تعرض المنفذ 80.

هل مدير الشهادات جاهز للإنتاج؟

بالتأكيد. يعمل على تشغيل SSL لمجموعات Kubernetes الكبيرة عبر المؤسسات والسحابة العامة.

هل يمكنني استخدام شهادة حرف بدل مع ACME في Kubernetes؟

نعم، ولكن شهادات أحرف البدل تتطلب التحقق من صحة DNS-01، والذي يتضمن تحديث سجلات DNS بدلاً من استخدام تحديات HTTP. تأكد من أن موفر DNS الخاص بك يدعم الأتمتة (عبر واجهة برمجة التطبيقات)، وقم بتكوين محلل DNS01 وفقًا لذلك في إعداد مدير الشهادات لديك.

الكلمات الأخيرة

أنت الآن تعرف الآن كيفية تثبيت شهادة ACME SSL في Kubernetes باستخدام مدير الشهادات ومرجع مصدق متوافق مع ACME. هذا الإعداد مؤتمت بالكامل وقابل للتطوير لبيئات Kubernetes الحديثة. يمكنك الحصول على HTTPS آمن، والتجديد التلقائي، والتكامل السلس مع Ingress، كل ذلك دون مغادرة مجموعتك.

وفِّر 10% على شهادات SSL عند الطلب اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

كاتب محتوى متمرس متخصص في شهادات SSL. تحويل موضوعات الأمن السيبراني المعقدة إلى محتوى واضح وجذاب. المساهمة في تحسين الأمن الرقمي من خلال السرد المؤثر.