كيف تصدّر شهادة SSL من Azure Key Vault وتثبّتها على IIS
دليل عملي خطوة بخطوة باستخدام Azure CLI و OpenSSL
المقدمة
لو اشتريت أو ولّدت شهادة SSL داخل Azure Key Vault، هتلاقي إن الشهادة مش موجودة كملف تقدر تحمله مباشرةً — وده تصميم مقصود عشان تأمين الـ private key. في المقالة دي هنتكلم عن السيناريو اللي مررت بيه بنفسي: ازاي استخرجت الشهادة من Key Vault، حولتها للـ format الصح، وثبّتها على IIS على Windows Server.
get على الـ Secrets في Key Vault — Azure Cloud Shell أو Linux/WSL لتشغيل OpenSSL.
الجزء الأول: فهم بنية الشهادة في Azure Key Vault
Azure Key Vault بيخزّن الشهادات بطريقة مختلفة حسب نوع الـ object:
| النوع | ما بيحتويه | الاستخدام |
|---|---|---|
| Certificate | الـ public cert فقط | التحقق من الهوية |
| Secret ✅ | PFX كامل (cert + private key) بـ base64 | التصدير والتثبيت |
| Key | الـ private key (محمي داخل HSM) | عمليات التوقيع فقط |
عشان كده لازم نستخرج الـ Secret مش الـ Certificate — لأن الـ Secret هو اللي بيحتوي على الـ private key الضروري لتثبيت الـ SSL.
الجزء الثاني: تصدير الشهادة من Key Vault
1 تسجيل الدخول على Azure CLI
افتح Azure Cloud Shell (bash) من portal.azure.com أو استخدم الـ terminal بتاعك:
2 استخراج الشهادة كـ PFX
الأمر ده بيسحب الـ Secret من Key Vault ويحوّله مباشرةً لملف .pfx — بدون ما يحفظ الـ base64 في ملف وسيط:
cert.b64) — ده بيسيب الـ private key في ملف نص عادي على الـ disk. الأحسن دايماً تعمل pipe مباشر زي ما هو موضح.
3 التحقق من الملف
cert.pfx: data — ده معناه إن الملف binary صح وليس text.
الجزء الثالث: تحويل PFX لـ PEM (لـ Linux / Nginx / Apache / Home Assistant)
لو محتاج الشهادة على Linux، هتحتاج تحوّلها لـ PEM format — في خطوتين:
1 استخراج الـ Certificate
2 استخراج الـ Private Key
no start line أو unsupported، ضيف -legacy:openssl pkcs12 -legacy -in cert.pfx -clcerts -nokeys -out home.pem
3 تحميل الملفات ومسح المؤقت
home.pem (الشهادة) و key.pem (الـ private key) جاهزين للاستخدام على أي Linux server.
الجزء الرابع: تثبيت الشهادة على IIS (Windows Server)
1 استيراد الـ PFX بـ PowerShell
بعد تحميل ملف cert.pfx للسيرفر، افتح PowerShell كـ Administrator:
تحقق إن الشهادة اتاضافت:
2 ربط الشهادة بـ IIS Manager
- افتح IIS Manager ← Sites ← اختار موقعك
- اضغط على Bindings ← Add
- Type: https | Port: 443 | IP: All Unassigned
- SSL Certificate: اختار الشهادة اللي استوردتها
- اضغط OK ثم Restart الـ IIS
مشاكل شائعة وحلولها
| المشكلة | الحل |
|---|---|
| Forbidden / Access Denied | تأكد إن حسابك عنده صلاحية get على الـ Secrets في Key Vault Access Policies |
| base64: invalid input | تأكد إن نوع الـ Secret هو Certificate وليس Key أو manual secret |
| openssl: no start line | استخدم -legacy مع OpenSSL v3: openssl pkcs12 -legacy ... |
| IIS: Certificate not found | تأكد إن الاستيراد اتعمل على LocalMachine\My مش CurrentUser\My |
| PFX password غلط | الـ PFX من Key Vault أحياناً بدون password — اضغط Enter لو سألك |
نصائح الأمان 🔐
- لا تسيب ملف
cert.pfxأوkey.pemعلى الـ Cloud Shell — امسحهم فور ما تخلص - استخدم RBAC أو Key Vault Access Policies بمبدأ الـ least privilege
- فعّل Soft Delete و Purge Protection على الـ Key Vault
- دوّر الشهادة قبل انتهاء صلاحيتها — Azure Defender بيبعتلك alert قبل 30 يوم
- على Windows: قيّد صلاحيات ملف الـ PFX قبل ما تستورده
الخلاصة
عملية تصدير الشهادة من Azure Key Vault ممكن تبدو معقدة في الأول، بس لما تفهم إن الـ PFX الكامل موجود في الـ Secret مش الـ Certificate، بتبقى عملية بسيطة وسريعة.
az keyvault secret showبـ pipe مباشر لـbase64 -dلإنشاءcert.pfxopenssl pkcs12لتحويله لـ PEM لو محتاج LinuxImport-PfxCertificate+ IIS Bindings لتثبيته على Windows
لو عندك أي سؤال أو مريت بسيناريو مختلف، شاركني في التعليقات! 👇