VPN والوكيل والفلاتر
شهادات وكيل الشركة تعطل أدوات Terminal على Mac
تفحص بعض شبكات الشركات حركة HTTPS. يوقّع الوكيل حركة البيانات بعد ذلك بشهادة جذر الشركة، وتتوقف الأدوات التي لا تثق بها.
الأعراض
- يعرض 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 وكيل النظام دائمًا. فهي تحتاج إلى متغيرات الوكيل أو إعداد خاص بها.
كيفية التحقق
اعرض سلسلة الشهادات التي يرسلها الخادم. انظر إلى جهة إصدار الشهادة العليا.
openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/nullاعرض مصافحة TLS باستخدام curl.
curl -v https://registry.npmjs.org/ -o /dev/nullاعثر على شهادة جذر الشركة في الوصول إلى سلسلة المفاتيح. ابحث عن اسم شركتك في سلسلة مفاتيح النظام.
اعرض متغيرات الوكيل في الصدفة.
env | grep -i proxy
كيفية الإصلاح
احصل على شهادة جذر الشركة من فريق تقنية المعلومات كملف PEM. لا تثق بشهادة من مصدر مجهول.
لأدوات المبنية على Node.js، أعطِ الملف في
NODE_EXTRA_CA_CERTS. أعد تشغيل الأداة بعد ضبطه.export NODE_EXTRA_CA_CERTS=~/certs/company-root.pemباستخدام Node.js 22.19 أو 24.6 أو أحدث، يمكنك استخدام الشهادات التي تثق بها سلسلة المفاتيح.
export NODE_USE_SYSTEM_CA=1في npm، اضبط ملف الشهادة.
npm config set cafile ~/certs/company-root.pemفي Git، اضبط ملف الشهادة.
git config --global http.sslCAInfo ~/certs/company-root.pemفي curl، أعطِ الملف باستخدام
--cacert.curl --cacert ~/certs/company-root.pem https://example.comاضبط وكيل الشركة لأدوات Terminal إذا كان فريق تقنية المعلومات يستخدم واحدًا.
export https_proxy=http://proxy.example.com:8080لا توقف فحص الشهادات، مثل
strict-sslأوhttp.sslVerify. فهذا يجعل الاتصال غير آمن.
باستخدام Kilobat
يبلغ فحص اتصال Kilobat عن فشل TLS كطبقة مستقلة. ويبيّن أيضًا ما إذا كان وكيل النظام يعمل عندما لا يعمل المسار المباشر.
kilobat why https://registry.npmjs.org/أضف
--appلاستخدام متغيرات الوكيل من بيئة ذلك التطبيق.kilobat why https://registry.npmjs.org/ --app process:node
الأسئلة
لماذا يعمل Safari بينما يفشل npm؟
يثق Safari بالشهادات الموجودة في سلسلة مفاتيح macOS. يستخدم npm الشهادات التي يتضمنها Node.js، ما لم تضف شهادة الشركة.
هل من الآمن ضبط strict-ssl على false؟
لا. يوقف ذلك جميع عمليات فحص شهادات السجل. أضف شهادة جذر الشركة بدلًا من ذلك.
المصادر
- Node.js: واجهة سطر الأوامر، NODE_EXTRA_CA_CERTS و--use-system-ca
- توثيق npm: config (cafile وproxy وhttps-proxy وstrict-ssl)
- صفحة دليل git-config(1)، http.sslCAInfo وhttp.proxy، المثبتة مع macOS 27.2 (Git 2.56)
- دعم Apple: تغيير إعدادات الثقة لشهادة في الوصول إلى سلسلة المفاتيح
- صفحة دليل curl(1) المثبتة مع macOS 27.2
تم التحقق في 29 أكتوبر 2026.