Request: خطأ: شهادة موقعة ذاتيًا في سلسلة الشهادات

تم إنشاؤها على ٥ فبراير ٢٠١٦  ·  14تعليقات  ·  مصدر: request/request

أحاول تحليل طلباتي ضد الخادم باستخدام Charles Proxy. يستخدم الخادم TSL لذلك لديّ الشهادة المزيفة الكلاسيكية لأتمكن من عرض حركة المرور الواضحة.

NodeJS / Request لا تعجبه ، لذلك لا يعمل البرنامج النصي الخاص بي ويرمي هذا الخطأ.

كيف يمكنني تجاوز هذا؟

                console.log('Response status: ' + response.statusCode);
                                                          ^
TypeError: Cannot read property 'statusCode' of undefined
    at Request._callback (/xxx:88:59)
    at self.callback (/xxx:199:22)
    at Request.emit (events.js:107:17)
    at Request.onRequestError (/xxx:821:8)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:271:9)
    at TLSSocket.emit (events.js:107:17)
    at TLSSocket.<anonymous> (_tls_wrap.js:942:18)
    at TLSSocket.emit (events.js:104:17)
    at TLSSocket._finishInit (_tls_wrap.js:460:8)
Error: Error: self signed certificate in certificate chain
Help (please use Stackoverflow)

التعليق الأكثر فائدة

شكرا على الشرح. اكتشفت كيفية تجنب المشاكل المتعلقة بالشهادات المزيفة في حالة اهتمام أي شخص:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

باستخدام ذلك يمكنني استخدام مصادقة SSL المزيفة لفحص الاتصالات بين عميلي والخادم.

ال 14 كومينتر

في هذه الحالة response غير محدد.
لا يجب تحديد الاستجابة.
سيتم تحديد الاستجابة فقط في حالة وصول استجابة فعلية.
إذا كان هناك خطأ في الاتصال فهذا ليس هو الحال.

تحقق من تحديد error ، أو أن يكون response.statusCode أكبر أو يساوي 400.

إذا كنت تريد تصحيح هذا الاستخدام

env NODE_DEBUG="*" node asdf.js

شكرا على الشرح. اكتشفت كيفية تجنب المشاكل المتعلقة بالشهادات المزيفة في حالة اهتمام أي شخص:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

باستخدام ذلك يمكنني استخدام مصادقة SSL المزيفة لفحص الاتصالات بين عميلي والخادم.

كان خطأي مشابهًا لكنني الآن nmaxcom

خطأ: غير قادر على التحقق من الشهادة الأولى
عند الخطأ (أصلي)
في TLSSocket.(_tls_wrap.js: 929: 36)
في TLSSocket.emit (events.js: 104: 17)
في TLSSocket._finishInit (_tls_wrap.js: 460: 8)

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

request.get({ uri: 'https://mydocker.com/v2/_catalog', rejectUnauthorized: false }

بالنسبة إلى المرجع المصدق الموقعة ذاتيًا ، يمكننا تحديد "رفض Unauthorized = false".
تحقق من request.js في السطر 623 & _tls_wrap.js في node.js.

أفضل البدائل هي:
أ) قم بإنهاء SSL في موازن التحميل الخاص بك
ب) استخدم شهادة مجانية

بهذه الطريقة يكون لديك تكوين واحد في جميع بيئاتك.
سيكون لديك ثقة أكبر في عمليات النشر وأخطاء التصفية في وقت سابق.

رفض الأعمال المصرح بها في options.rejectUnauthorized = false
ولكن ليس في options.agentOptions.rejectUnauthorized = false

لا أعرف لماذا 😢

https://github.com/request/request/blob/v2.81.1/request.js#L257 -L259

آسف ، انظر فقط الرمز. لقد فهمت أن strictSSL هو مجرد اسم مستعار لـ rejectUnauthorized
يجب أن تقول أن هذا اسم سيء ، فقط استخدم rejectUnauthorized 😭

الحصول على هذا الخطأ أثناء تشغيل التعليمات البرمجية
خطأ في التحليل: خطأ في بناء الجملة ، "var" غير متوقع (T_VAR) ، توقع نهاية الملف في C: xampphtdocsPHPIMAPadminindex.php على السطر 146

var notifier = يتطلب ('mail-notifier') ؛
فار imap = {
اسم المستخدم: "anandlintas2017" ،
كلمة المرور: "xxxxxxxxx" ،
المضيف: "imap.gmail.com" ،
المنفذ: 993 ، // منفذ imap
آمن: صحيح // استخدام اتصال آمن
} ؛

notifier (imap) .on ('mail'، الوظيفة (البريد) {console.log (mail)؛}). start ()؛
؟>

بالنسبة للأشخاص الذين يقترحون تعيين رفض غير مصرح به = خطأ ماذا لو كان لدي خوادم داخلية يجب أن يكون لديها اتصالات مشفرة مع بعضها البعض مع بعض الشهادات الموقعة ذاتيًا ، فإن إعداد iguess سيوقف الخطأ غير المصرح به للخطأ ولكن اتصالاتي معرضة بنسبة 100٪ لـ MITM atacks ، لاحظ أن هذا خطأ في مكتبة nodejs tls التي يعاني منها ولا يمكنني العثور على أي إصلاح في أي مكان (لدي google للصفحة 5 من نتائج google العميقة حقًا) لا أعرف كيف لا يفعل الآخرون تحدث عن ذلك ، هل أفتقد شيئًا هنا! !!!!! يرجى تصحيح لي إذا كنت مخطئا !!

rejectUnauthorized works in options.rejectUnauthorized = false
but not in options.agentOptions.rejectUnauthorized = false

كلاهما لا يعمل لدي

request.get({ uri: 'https://s3.amazonaws.com/...',
    rejectUnauthorized: false,
    // strictSSL: false,
    proxy: '127.0.0.1:8080',
    agentOptions: {
        rejectUnauthorized: false,
        // strictSSL: false,
    },
}, (...args) => {
    console.log(args);
    process.exit();
});

ملاحظة: تشغيل الكود من داخل ELECTRON مع تشغيل علامة تعطيل SSL.

بالنسبة لي ، أدى تعطيل برنامج مكافحة الفيروسات من Kaspersky إلى حل المشكلة.

يبدو أن https://github.com/request/request/issues/2061#issuecomment -182573171 هو الإجابة على السؤال العام

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" ،

لا يعطي أي تأثير.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات