شهادات TLS والتجديد التلقائي
لماذا تحتاجه ؟
يقوم TLS بتشفير حركة المرور «kliyent↔servis»، ويؤكد صحة الخادم (ومع mTLS - العميل)، ويحمي أيضًا من الانتحال. المخاطر الرئيسية: تأخير إصدار الشهادات، وضعف المفاتيح، وعدم صحة سلسلة الثقة، والإجراءات اليدوية. الغرض من المقالة هو وصف البنية التي تكون فيها الشهادات ذات صلة دائمًا وتمر عمليات التناوب دون أن يلاحظها أحد من قبل المستخدمين.
المفاهيم الأساسية
CA/الموقّع: سلطة التصديق (العمومية أو الداخلية).
السلسلة (fullchain): شهادة الأوراق + الوسيطة + الجذر (الجذر عادة في مستودعات العملاء).
SAN (اسم الموضوع البديل): قائمة النطاقات/بروتوكول الإنترنت لشهادة واحدة (multi-SAN).
Wildcard: '.example. com' - مناسب للعديد من المناطق الفرعية، يتطلب التحقق من صحة DNS.
تدبيس OCSP: يطبق الخادم آخر حالة إلغاء ؛ يقلل من زمن الوصول والاعتماد على OCSPs الخارجية.
HPKP: عفا عليه الزمن/غير مستخدم ؛ بدلاً من ذلك، سجلات الأشعة المقطعية والنظافة الرئيسية.
CT (شفافية الشهادة): سجلات الإصدار العام - مهمة للتحكم في الإصدارات المزيفة.
ملف تعريف ومفاتيح التشفير
الخوارزميات:- ECDSA (P-256) - سريع ومضغوط ؛ مفضلة للعملاء المعاصرين.
- RSA-2048/3072 - لا تزال متوافقة ؛ (RSA + ECDSA).
- الجيل الرئيسي: فقط على الجانب المستهدف (لا تنقل الخواص عبر الشبكة)، حماية حقوق الوصول ('0600').
- HSM/KMS: بالنسبة للمجالات الحيوية (الدفع/PII) مفاتيح التخزين في HSM/KMS، يمكن عمليات التدقيق.
- العمر: تشجع الشهادات القصيرة (90 يومًا/30 يومًا للداخلية) على التناوب المتكرر وتقليل مخاطر التسوية.
النماذج المعمارية لإدارة TLS
1. Public CA عبر ACME (دعونا نشفر/Buypass/إلخ)
التحقق: HTTP-01 (عبر خادم الويب/الدخول) أو DNS-01 (لنطاقات البدل/خارج التيار).
الإيجابيات: ثقة واسعة مجانية/آلية. السلبيات: التبعيات الخارجية.
2. CA الداخلية للشركات
الأدوات: HashiCorp Vault PKI، Smallstep (step-ca)، Microsoft AD CS، CFSSL.
الإيجابيات: السياسات الجمركية، mTLS، TTL قصير، إصدار للمجالات الداخلية. السلبيات: توزيع الجذور، إدارة الثقة.
3. هجين
أ - المساعدة العامة للمستخدمين الخارجيين ؛ CA الداخلية - للخدمة إلى الخدمة (mTLS) والقنوات والمديرين بين المجموعات.
أنماط التجديد التلقائي (تجديد)
المبادئ العامة
عتبة التجديد: تبدأ من '≤ 30' يوما قبل انتهاء الصلاحية ؛ للخدمات الحيوية - في '≤ 45' يوما.
صفر توقف: إصدار شهادة جديدة، استبدال ذري، إعادة تحميل سلسة دون كسر الاتصالات.
عقد مزدوج (الأزرق/الأخضر): تخزين الشهادة الحالية والتالية ؛ التبديل - عبر symlink أو سر محفوظ.
تنبيه: إنذارات يومية 45/30/14/7/3/1 ؛ إنذار منفصل أثناء فشل تحدي ACME.
عملاء ACME وتطبيقاتهم
certbot/acme. sh/lego: عوامل خفيفة على VM/bare-metal.
مدير شهادة (Kubernetes): مشغل يعمل مع Issuer/ClusterIssuer ؛ يقوم بأتمتة الإصدار/التجديد والكتابة إلى Secret.
step-ca/Vault Agent: إطلاق/دوران تلقائي باستخدام TTLs قصيرة، وأنماط جانبية لتحديث المفاتيح والسلاسل.
عمليات Kubernetes
مدير شهادة (مثال Issuer لـ Let' s Encrypt HTTP-01 عبر Ingress):yaml apiVersion: cert-manager. io/v1 kind: ClusterIssuer metadata:
name: le-http01 spec:
acme:
email: devops@example. com server: https://acme-v02. api. letsencrypt. org/directory privateKeySecretRef:
name: le-account-key solvers:
- http01:
ingress:
class: nginx
طلب الشهادة:
yaml apiVersion: cert-manager. io/v1 kind: Certificate metadata:
name: app-cert namespace: prod spec:
secretName: app-tls dnsNames:
- app. example. com issuerRef:
name: le-http01 kind: ClusterIssuer privateKey:
algorithm: ECDSA size: 256 renewBefore: 720h # 30 дней
يحدث التبادل الساخن في NGINX-Ingress تلقائيًا عند تحديث "Secret'. أضف «sl-ecdh-curve: secp256r1» وتمكين تدبيس OCSP عبر/ConfigMap.
عمليات VM/Bare-metal
Certbot (HTTP-01):bash sudo certbot certonly --webroot -w /var/www/html -d example. com -d www.example. com \
--deploy-hook "systemctl reload nginx"
«تجديد certbot» الدوري عبر مؤقت النظام.
بالنسبة لبطاقة البدل، استخدم DNS-01 (مزود ملحق) وما شابه «-deploy-hook».
bash export CF_Token="" # example for Cloudflare acme. sh --issue --dns dns_cf -d example. com -d '.example. com' \
--keylength ec-256 --ecc \
--reloadcmd "systemctl reload nginx"
استبدال NGINX الذري
حافظ على fullchain. pem' и 'brikey. pem' تحت مسارات مستقرة (symlink to versived files)، ثم "nginx -s reload'.
PKI الداخلية و mTLS
HashiCorp Vault PKI (دور عينة):bash vault secrets enable pki vault secrets tune -max-lease-ttl=87600h pki vault write pki/root/generate/internal common_name="Corp Root CA" ttl=87600h vault write pki/roles/service \
allowed_domains="svc. cluster. local,internal. example" allow_subdomains=true \
max_ttl="720h" require_cn=false key_type="ec" key_bits=256
الإطلاق التلقائي: عن طريق حاقن عامل القفز (K8s) أو عربة جانبية ؛ ويعيد الطلب قراءة الشهادة من ملف مراقب الخدمة الميدانية.
TTL القصير: 24-720 ساعة، مما يشجع على التناوب المتكرر ويقلل من قيمة المفتاح المسروق.
MTLS: إصدار شهادات العملاء لخدمات/أدوار محددة ؛ في المدخلات - TLS المتبادلة في الدخول/sidecar-proxy.
التشغيل الآمن
مشاركة الأسرار: المفاتيح الخاصة - فقط على المضيف/الكبسولة، الوصول وفقًا لمبدأ أقل الامتيازات.
حقوق الملف: «600» للمفتاح ؛ المالك - مستخدم العملية.
فترة السماح: حدد «التجديد من قبل» لتكون كافية لحساب إخفاقات DNS/ACME/المزود.
OCSP Stapling: تشغيل على الجبهات ؛ رصد نضارة الاستجابة (عادة 12-72 ساعة).
HSTS: قم بتشغيله تدريجيًا (بدون «تحميل مسبق» في البداية)، مع التأكد من تسليم HTTPS الصحيح لجميع المحتوى.
ثنائي الشهادة (RSA + ECDSA): يحسن التوافق والأداء ؛ امنح ECDSA للعملاء المعاصرين.
الرصد و SLO
المقاييس والفحوصات:- أيام قبل انتهاء الصلاحية (مقياس) لكل مجال/سر ؛ SLO: «لا توجد شهادة من أقل من 7 أيام حتى انتهاء الصلاحية».
- صلاحية السلسلة (الربط)، امتثال SAN للمجالات/الملكية الفكرية المطلوبة.
- حالة تدبيس OCSP (نضارة الاستجابة).
- النسبة المئوية للتحديات الناجحة/غير الناجحة.
- Leitency TLS handships, protocol versions/ciphers (audit).
- تحذير: 30 يومًا حتى انتهاء الصلاحية.
- كريت: 7 أيام/فشل «تجديد».
- الصفحة: 72 ساعة/سلسلة غير صالحة في prod/no OCSP stapling.
الحوادث والتراجع
تأخير الشهادة: إعادة الإصدار والنشر يدويًا مؤقتًا، وإصلاح RCA (لماذا لم ينجح التجديد، قيود حظر DNS/API).
الحل الوسط الرئيسي: إعادة الإصدار/الإلغاء الفوري، تناوب الأسرار، تدقيق الوصول، تناوب مزود DNS/رموز حساب ACME.
سلسلة غير صحيحة: إيداع عاجل لـ «سلسلة كاملة» صحيحة، إعادة تحميل قسرية للجبهات.
قفل مزود DNS: احتفظ بمسار التحقق الاحتياطي (HTTP-01) أو DNS الثانوي.
قائمة مرجعية لتنفيذ التجديد التلقائي
1. اختر النموذج (public CA عبر ACME/internal PKI/hybrid).
2. حدد ملف تعريف التشفير: ECDSA-P256، إذا لزم الأمر، شهادة مزدوجة مع RSA-2048.
3. اضبط العامل التلقائي (cert-manager, certbot, acme. sh, Vault Agent).
4. تنظيم استبدال بدون توقف (نمط symlink، دخول إعادة التحميل الساخن/NGINX/المبعوث).
5. قم بتشغيل تدبيس OCSP و HSTS (على مراحل).
6. إضافة تواريخ التنبيه وحالات التحدي ؛ وصف SLO.
7. وثق زجاج الكسر وعمليات الإصدار اليدوي.
8. إجراء تمارين «مزيفة»: كسر DNS-01، سقوط ACME، انتهى الصلاحية الجذرية/الوسيطة.
9. مراجعة الوصول إلى المفاتيح الخاصة، وتدوير رموز مزود DNS وحسابات ACME.
ميزات iGaming/fintech
PCI DSS/PII: أجنحة Cipher الصارمة، أجبرت TLS 1. 2+/1. 3، إيقاف تشغيل الشفرات/الضغط الضعيف، واستئناف الجلسة دون تنازلات أمنية.
تجزئة المجال: شهادات منفصلة للمدفوعات الفرعية والمديرين ؛ لمقدمي المحتوى - سلاسل معزولة.
مراجعة الحسابات والتسجيل: إصدار السجلات/الاستدعاء/التناوب ؛ توقيع CI/CD القطع الأثرية.
تعدد الأقاليم: المصدرون المحليون للمناطق حتى لا يعتمدوا على حالات الفشل عبر الأقاليم.
تشكيلات العينات
NGINX (RSA + ECDSA، تدبيس OCSP)
nginx ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ecdh_curve secp256r1;
ssl_certificate /etc/nginx/certs/app_ecdsa/fullchain. pem;
ssl_certificate_key /etc/nginx/certs/app_ecdsa/privkey. pem;
ssl_certificate /etc/nginx/certs/app_rsa/fullchain. pem;
ssl_certificate_key /etc/nginx/certs/app_rsa/privkey. pem;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
OpenSSL: CSR (ECDSA-P256)
bash openssl ecparam -name prime256v1 -genkey -noout -out privkey. pem openssl req -new -key privkey. pem -out csr. pem -subj "/CN=app. example. com" \
-addext "subjectAltName=DNS:app. example. com,DNS:www.example. com"
CFSSL: الموجز والإصدار
json
{
"signing": {
"profiles": {
"server": {
"usages": ["digital signature","key encipherment","server auth"],
"expiry": "2160h"
}
}
}
}
bash cfssl gencert -profile=server ca. json csr. json cfssljson -bare server
الأسئلة الشائعة
هل أحتاج إلى بطاقة بدل ؟
إذا ظهرت مناطق فرعية جديدة غالبًا، نعم (عبر DNS-01). خلاف ذلك، استخدم multi-SAN للمجالات الصريحة.
ماذا تختار: مدير الشهادة أم السرتبوت ؟
Kubernetes → مدير شهادة. VM/microservices من K8s → certbot/lego/acme. sh. مرفق المفاتيح العمومية الداخلي → القبو/الخطوة ca.
هل يمكن تخفيض TTL إلى يوم واحد ؟
بالنسبة لـ mTLS الداخلية، نعم، إذا كانت الأتمتة/السيارة الجانبية تضمن التناوب ويمكن إعادة التحميل الساخن.
كيف تؤمن DNS-01 ؟
رمز منفصل/وصول ضئيل إلى المنطقة، تناوب المفتاح، تقييد الوصول إلى IP API، التدقيق.
المجموع
إدارة TLS الموثوقة هي مزيج من ملف تعريف التشفير الصحيح، والإصدار الآلي والتجديد، والدوران الصفري، وإمكانية الملاحظة، وإجراءات الاستجابة الواضحة للحوادث. قم ببناء خط أنابيب ACME/PXI، وأضف تنبيهًا صارمًا وقم بتدريب سيناريوهات «الطوارئ» بانتظام - ولن تكون الشهادات المنتهية الصلاحية مصدر أجهزة الاستدعاء الليلية.