elide crt

elide crt⁩ هي مجموعة أدوات ⁦PKI⁩ محلية كاملة مدمجة في بيئة التشغيل. أنشئ سلطات شهادات، وولّد شهادات موقّعة بـ⁦CA⁩ أو موقّعة ذاتيًا، وثبّت سلطات الشهادات في مخازن ثقة النظام والمتصفح، وافحص الشهادات من ملفات أو مضيفين بعيدين، وتحقق من سلاسل الشهادات، وحوّل بين ⁦PEM⁩ و⁦DER⁩، وجدّد الشهادات عبر ⁦ACME DNS-01⁩. كل أمر فرعي يدعم ⁦--json⁩ لمخرجات قابلة للقراءة آليًا.

إذا سبق لك الصراع مع تعاويذ ⁦openssl⁩ لتشغيل ⁦HTTPS⁩ المحلي، فهذا هو الحل.

---

بدء سريع

أنشئ ⁦CA⁩ محلية وولّد شهادة تطوير موثوقة من المتصفح في ثلاثة أوامر:

bash
# 1. Create a local Certificate Authority
 elide crt ca

# 2. Generate a certificate signed by that CA
 elide crt generate example.local localhost 127.0.0.1

# 3. Trust the CA system-wide (requires sudo on Linux/macOS)
 sudo elide crt trust

يمكن لخادم التطوير الآن استخدام ⁦example.local.crt⁩ و⁦example.local.key⁩ لـ⁦HTTPS⁩ بدون تحذيرات المتصفح.

---

الأوامر الفرعية

الأمر الفرعيما يفعله
caإنشاء أو عرض سلطة شهادات محلية
generateإنشاء شهادة ⁦TLS⁩ (موقّعة بـ⁦CA⁩ أو موقّعة ذاتيًا)
trustتثبيت شهادة ⁦CA⁩ في مخازن ثقة النظام
untrustإزالة شهادة ⁦CA⁩ من مخازن الثقة
inspectعرض تفاصيل الشهادة من ملف أو مضيف بعيد
verifyالتحقق من صلاحية الشهادة وسلسلتها واسم المضيف
exportتحويل الشهادات بين صيغتي ⁦PEM⁩ و⁦DER⁩
renewتجديد الشهادات عبر تحدي ⁦ACME DNS-01⁩ (⁦Let's Encrypt⁩)
---

سير العمل الشائعة

⁦HTTPS⁩ للتطوير المحلي

إعداد ⁦HTTPS⁩ موثوق من المتصفح للتطوير المحلي. أنشئ ⁦CA⁩ مرة واحدة، وثق بها مرة واحدة، ثم ولّد شهادات لكل مشروع حسب الحاجة.

bash
# One-time setup
 elide crt ca
 sudo elide crt trust

# Per-project
 elide crt generate myapp.local localhost 127.0.0.1 ::1

استخدم الشهادة المُولَّدة مع ⁦elide serve⁩ أو أي خادم يدعم ⁦TLS⁩:

bash
 elide serve --tls-cert myapp.local.crt --tls-key myapp.local.key ./dist

شهادات عميل ⁦mTLS⁩

ولّد شهادات عميل للمصادقة المتبادلة عبر ⁦TLS⁩. نفس ⁦CA⁩ توقّع شهادتَي الخادم والعميل؛ يتحقق الخادم من شهادة العميل مقابل تلك ⁦CA⁩.

bash
 elide crt generate api.internal --out-dir ./certs
 elide crt generate client-service --client --out-dir ./certs

فحص شهادات الإنتاج

فحص سلسلة الشهادات وانتهاء الصلاحية لخادم حي:

bash
# Full chain
 elide crt inspect example.com --chain

# Verify with an expiry warning threshold
 elide crt verify example.com --expiry-warn 30

# Compact one-liner for CI dashboards
 elide crt inspect example.com --brief

تجديد شهادات ⁦ACME⁩

الحصول على أو تجديد شهادة موثوقة عامة من ⁦Let's Encrypt⁩ باستخدام تحقق ⁦DNS-01⁩:

bash
 elide crt renew example.com \
 --acme-email admin@example.com \
 --dns cloudflare \
 --dns-token "$CF_API_TOKEN"

اختبر مع بيئة ⁦Let's Encrypt⁩ التجريبية أولاً:

bash
 elide crt renew example.com \
 --acme-email admin@example.com \
 --dns cloudflare \
 --dns-token "$CF_API_TOKEN" \
 --staging

⁦CA⁩ وكيل ⁦MITM⁩

إنشاء ⁦CA⁩ منفصلة لاعتراض ⁦TLS⁩ الخاص بالوكيل الأمامي، مع عزلها عن ⁦CA⁩ التطوير:

bash
 elide crt ca --proxy
 sudo elide crt trust --proxy

تحويل صيغة الشهادات

التحويل بين ⁦PEM⁩ و⁦DER⁩، أو تجميع سلسلة شهادات:

bash
# PEM to DER
 elide crt export cert.pem --out cert.der

# Bundle leaf + CA into a single chain file
 elide crt export leaf.crt --chain ca.crt --out fullchain.pem

---

تخزين ⁦PKI⁩

يُخزّن ⁦Elide⁩ شهادات ⁦CA⁩ والمفاتيح الخاصة في دليل بيانات خاص بالمنصة:

~/.local/share/elide/pki/                   # Linux (via XDG_DATA_HOME)
~/Library/Application Support/elide/pki/     # macOS
  ca/
    ca.crt          # CA certificate (PEM)
    ca.key          # CA private key (PEM, mode 0600)
  proxy-ca/
    proxy-ca.crt    # Proxy MITM CA certificate
    proxy-ca.key    # Proxy MITM CA private key

تُنشأ ملفات المفاتيح الخاصة بأذونات ⁦0600⁩ على أنظمة ⁦Unix⁩. يمكن تجاوز دليل التخزين بـ⁦--out-dir⁩ في الأمر الفرعي ⁦ca⁩.

---

مخرجات ⁦JSON⁩

كل أمر فرعي يدعم ⁦--json⁩ لمخرجات مُهيكلة، مما يسهّل التكامل مع السكربتات وخطوط أنابيب ⁦CI⁩:

bash
# Extract DNS SANs from a remote certificate
 elide crt inspect example.com --json | jq '.[0].san_dns'

# Check validity programmatically
 elide crt verify ./cert.pem --json | jq '.valid'

# Show existing CA details as JSON
 elide crt ca --show --json

---

انظر أيضًا