Request: Kesalahan: sertifikat yang ditandatangani sendiri dalam rantai sertifikat

Dibuat pada 5 Feb 2016  ·  14Komentar  ·  Sumber: request/request

Saya mencoba menganalisis permintaan saya terhadap server menggunakan Charles Proxy. Server menggunakan TSL jadi saya memiliki sertifikat palsu klasik untuk dapat melihat lalu lintas yang jelas.

NodeJS / Request tidak menyukainya, jadi skrip saya tidak berjalan dan memunculkan kesalahan itu.

Bagaimana saya bisa melewati ini?

                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)

Komentar yang paling membantu

Terima kasih atas penjelasannya. Saya menemukan cara menghindari masalah dengan sertifikat palsu jika ada yang tertarik:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Dengan itu saya dapat menggunakan otentikasi SSL palsu untuk memeriksa komunikasi antara klien saya dan server.

Semua 14 komentar

dalam hal ini response tidak terdefinisi.
respon tidak harus didefinisikan.
respons hanya akan ditentukan jika respons aktual tiba.
jika ada beberapa kesalahan koneksi yang tidak terjadi.

periksa error untuk didefinisikan, atau response.statusCode lebih besar atau sama dengan 400.

jika Anda ingin men-debug gunakan ini

env NODE_DEBUG="*" node asdf.js

Terima kasih atas penjelasannya. Saya menemukan cara menghindari masalah dengan sertifikat palsu jika ada yang tertarik:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Dengan itu saya dapat menggunakan otentikasi SSL palsu untuk memeriksa komunikasi antara klien saya dan server.

Kesalahan saya serupa tetapi sekarang saya baik-baik saja, terima kasih @nmaxcom

Kesalahan: tidak dapat memverifikasi sertifikat pertama
di Kesalahan (asli)
di TLSSocket.(_tls_wrap.js:929:36)
di TLSSocket.emit (events.js:104:17)
di TLSSocket._finishInit (_tls_wrap.js:460:8)

atau Anda bisa menggunakan mari mengenkripsi, sertifikat yang ditandatangani oleh CA yang sah.
sertifikat yang ditandatangani sendiri tidak masuk akal sekarang.

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

Untuk CA yang ditandatangani sendiri, kita dapat menentukan 'rejectUnauthorized = false'.
Periksa request.js di baris 623 & _tls_wrap.js di node.js.

Alternatif yang lebih baik adalah:
a) Lakukan penghentian SSL di penyeimbang beban Anda
b) Gunakan sertifikat gratis

Dengan cara ini Anda memiliki satu konfigurasi di semua lingkungan Anda.
Anda akan memiliki kepercayaan diri yang lebih tinggi pada penerapan Anda dan memfilter kesalahan lebih awal.

tolak Karya tidak sah di options.rejectUnauthorized = false
tapi tidak di options.agentOptions.rejectUnauthorized = false

gak tau kenapa

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

Maaf, hanya melihat kode. Saya mengerti bahwa strictSSL hanyalah sebuah alias untuk rejectUnauthorized
Harus mengatakan itu nama yang buruk, gunakan saja rejectUnauthorized

mendapatkan kesalahan ini saat menjalankan kode
Kesalahan penguraian: kesalahan sintaks, 'var' (T_VAR) yang tidak terduga), mengharapkan akhir file di C:xampphtdocsPHPIMAPadminindex.php pada baris 146

var notifier = membutuhkan('pemberitahu surat');
var gambar = {
nama pengguna: "anandlintas2017",
kata sandi: "xxxxxxxxx",
host: "imap.gmail.com",
port: 993, // port imap
aman: benar // gunakan koneksi aman
};

notifier(imap).on('mail',fungsi(mail){console.log(mail);}).start();
?>

untuk orang-orang yang menyarankan untuk mengatur rejectUnauthorized=false bagaimana jika saya memiliki server internal yang seharusnya memiliki koneksi terenkripsi satu sama lain dengan beberapa sertifikat yang ditandatangani sendiri, pengaturan iguess rejectUnauthorized ke false akan menghentikan kesalahan tetapi koneksi saya 100% rentan terhadap serangan MITM, saya lihat bahwa ini adalah bug di perpustakaan nodejs tls yang dideritanya dan saya tidak dapat menemukan perbaikan di mana pun (saya memiliki google ke halaman 5 hasil google yang sangat dalam) saya tidak tahu bagaimana orang lain tidak bicarakan itu, apakah saya melewatkan sesuatu di sini! !!!!! mohon koreksi saya jika saya salah !!

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

Keduanya tidak bekerja untuk saya

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();
});

PS Menjalankan kode dari dalam ELEKTRON dengan ssl menonaktifkan flag aktif.

Bagi saya, menonaktifkan antivirus Kaspersky memecahkan masalah.

https://github.com/request/request/issues/2061#issuecomment -182573171 tampaknya menjadi jawaban untuk pertanyaan umum

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Tidak memberikan efek.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat