VPN والوكيل والفلاتر

شهادات وكيل الشركة تعطل أدوات Terminal على Mac

تفحص بعض شبكات الشركات حركة HTTPS. يوقّع الوكيل حركة البيانات بعد ذلك بشهادة جذر الشركة، وتتوقف الأدوات التي لا تثق بها.

ينطبق على: جميع إصدارات macOS الحالية. يتطلب Node.js NODE_USE_SYSTEM_CA إصدار Node.js 22.19 أو 24.6 أو أحدث.تاريخ التحقق: 29 أكتوبر 2026

الأعراض

  • يعرض npm أو Node رسالة «self-signed certificate in certificate chain» أو «unable to get local issuer certificate».
  • يعرض Git رسالة «SSL certificate problem» للمستودعات البعيدة عبر HTTPS.
  • يفتح Safari الموقع، لكن curl أو Python لا يفتحه.
  • تحدث الأخطاء فقط على شبكة الشركة أو VPN.

الأسباب المحتملة

  • فحص TLS. يستبدل الوكيل شهادة الموقع بشهادة توقّعها شهادة جذر الشركة.
  • مخازن ثقة منفصلة. يستخدم Safari سلسلة مفاتيح macOS. تستخدم أدوات سطر الأوامر الكثيرة قائمة شهادات موثوقة خاصة بها.
  • إعداد وكيل مفقود. لا تستخدم الأدوات في Terminal وكيل النظام دائمًا. فهي تحتاج إلى متغيرات الوكيل أو إعداد خاص بها.

كيفية التحقق

  1. اعرض سلسلة الشهادات التي يرسلها الخادم. انظر إلى جهة إصدار الشهادة العليا.

    openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/null
  2. اعرض مصافحة TLS باستخدام curl.

    curl -v https://registry.npmjs.org/ -o /dev/null
  3. اعثر على شهادة جذر الشركة في الوصول إلى سلسلة المفاتيح. ابحث عن اسم شركتك في سلسلة مفاتيح النظام.

  4. اعرض متغيرات الوكيل في الصدفة.

    env | grep -i proxy

كيفية الإصلاح

  1. احصل على شهادة جذر الشركة من فريق تقنية المعلومات كملف PEM. لا تثق بشهادة من مصدر مجهول.

  2. لأدوات المبنية على Node.js، أعطِ الملف في NODE_EXTRA_CA_CERTS. أعد تشغيل الأداة بعد ضبطه.

    export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
  3. باستخدام Node.js 22.19 أو 24.6 أو أحدث، يمكنك استخدام الشهادات التي تثق بها سلسلة المفاتيح.

    export NODE_USE_SYSTEM_CA=1
  4. في npm، اضبط ملف الشهادة.

    npm config set cafile ~/certs/company-root.pem
  5. في Git، اضبط ملف الشهادة.

    git config --global http.sslCAInfo ~/certs/company-root.pem
  6. في curl، أعطِ الملف باستخدام --cacert.

    curl --cacert ~/certs/company-root.pem https://example.com
  7. اضبط وكيل الشركة لأدوات Terminal إذا كان فريق تقنية المعلومات يستخدم واحدًا.

    export https_proxy=http://proxy.example.com:8080
  8. لا توقف فحص الشهادات، مثل strict-ssl أو http.sslVerify. فهذا يجعل الاتصال غير آمن.

باستخدام Kilobat

  1. يبلغ فحص اتصال Kilobat عن فشل TLS كطبقة مستقلة. ويبيّن أيضًا ما إذا كان وكيل النظام يعمل عندما لا يعمل المسار المباشر.

    kilobat why https://registry.npmjs.org/
  2. أضف --app لاستخدام متغيرات الوكيل من بيئة ذلك التطبيق.

    kilobat why https://registry.npmjs.org/ --app process:node

الأسئلة

لماذا يعمل Safari بينما يفشل npm؟

يثق Safari بالشهادات الموجودة في سلسلة مفاتيح macOS. يستخدم npm الشهادات التي يتضمنها Node.js، ما لم تضف شهادة الشركة.

هل من الآمن ضبط strict-ssl على false؟

لا. يوقف ذلك جميع عمليات فحص شهادات السجل. أضف شهادة جذر الشركة بدلًا من ذلك.

المصادر

تم التحقق في 29 أكتوبر 2026.