Request: menghubungkan ke titik akhir https dan mendapatkan: Nama host/IP tidak cocok dengan nama alternatif sertifikat

Dibuat pada 18 Sep 2015  ·  12Komentar  ·  Sumber: request/request

Saya mencoba terhubung ke layanan https REST eksternal di heroku dari localhost saya dengan kode berikut:

request(
            {
                url: config.get('host') +req.originalUrl,
                method: req.method,
            }, function (error, response, body) {

            })

Saya mendapatkan kesalahan berikut dalam panggilan balik:

Hostname/IP tidak cocok dengan altname sertifikat: "Host: localhost. tidak ada dalam altname sertifikat: DNS:_.herokuapp.com, DNS:herokuapp.com "
Tuan rumah: localhost. tidak ada dalam nama alternatif sertifikat: DNS:_.herokuapp.com, DNS:herokuapp.com

jika saya terhubung ke layanan yang sama yang diinstal secara lokal semuanya berfungsi dengan benar, jadi itu harus terkait dengan https.

Ada bantuan?

Komentar yang paling membantu

Hal ini mengerikan

Semua 12 komentar

Apa URL yang tepat dari permintaan Anda config.get('host') +req.originalUrl ?

Saya mendapatkan ini juga. Saya menggunakan sertifikat yang ditandatangani sendiri dan saya tidak ingin melakukan pemeriksaan nama host. Saya memiliki ini dalam permintaan saya

agentOptions: {
        ca: fs.readFileSync('ca.cert.pem')
    }

Bagaimana Anda mengatur abaikanHostname?

Sudahkah Anda mencoba mengatur variabel rejectUnauthorized ke false?

permintaan ``````({
url: config.get('host') +req.originalUrl,
metode: req.metode,
tolakTidak sah: salah
},
fungsi (kesalahan, respons, isi) {

        })```

``````

Akan lebih baik jika rejectUnauthorized: false ada di halaman depan dokumen di suatu tempat.

Bukankah rejectUnauthorized: false membuat Anda menerima sertifikat server apa pun? Jika itu masalahnya, saya tidak menganggapnya sebagai solusi yang valid.
Saya ingin memverifikasi server dengan memastikan sertifikat ditandatangani oleh CA tepercaya (dalam kasus saya, ini adalah CA saya sendiri). Saya tidak ingin membungkam semuanya dan membuatnya tidak aman.

Hal ini mengerikan

Anda harus mencocokkan Server sertifikasi CommonName untuk klien hostname .

Anda harus mencocokkan CommonName sertifikasi server dengan nama host klien.

Mengapa demikian? Mengapa klien peduli dengan nama hostnya sendiri yang ada di sertifikat server? Ini tentang otentikasi server. Terima kasih

FYI saya mendapatkan kesalahan ini ketika saya meneruskan permintaan, saya menggunakan request({host: 'something.com'... headers: req.headers... Apa yang saya tidak sadari pada awalnya adalah bahwa di header ada host: 'localhost' , yang merupakan pelakunya. Saya menggantinya dan sekarang memverifikasi OK.

Saya percaya saya memukul masalah yang sama. Saya mendapatkan kesalahan berikut saat menggunakan node 6.10.3 dan meminta 2.88:

Kesalahan: Nama host/IP tidak cocok dengan nama alternatif sertifikat: "Host: https. tidak ada dalam nama alternatif sertifikat:

Saya melacak ini hingga ke kode node tls.js. Entah bagaimana, "https." sedang diteruskan sebagai nama host dengan permintaan ke node.js. Jika saya menetapkan rejectUnauthorized ke false, kode saya berfungsi. Jadi saya memberikan nama host yang benar di url.

Saya percaya ini dapat dikurangi dengan menggunakan kunci api yang disediakan oleh domain target.

FYI saya mendapatkan kesalahan ini ketika saya meneruskan permintaan, saya menggunakan request({host: 'something.com'... headers: req.headers... Apa yang saya tidak sadari pada awalnya adalah bahwa di header ada host: 'localhost' , yang merupakan pelakunya. Saya menggantinya dan sekarang memverifikasi OK.

masalah saya terpecahkan. saya lupa memodifikasi req.header dan mengubah Host.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat