2016-12-30 22 views
5

Próbuję wykonać https request z mojego serwer węzeł stronie, ale to daje mi następujący błąd: -CERT_UNTRUSTED błąd podczas wykonywania https zażądać

Caught exception: Error: CERT_UNTRUSTED 

Jeśli mogę wykonać http request to działa dobrze, ale dla httpslinkito nie działa.

Oto mój kod: -

var request = require('request'); 
request('https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) // Show the HTML for the Google homepage. 
    } 
}) 

jakiś pomysł?

+0

Może powinieneś sprawdzić swoje środowisko sieciowe? Uruchomię twój kod i działam dobrze. – bananaappletw

+0

Jak sprawdzić środowisko sieciowe. kod działa dobrze na lokalnym, ale nie na produkcji. Mam do czynienia z problemem na wikipidea url jak https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden –

+0

Czy widzisz dziennik konsoli środowiska produkcyjnego? Może spróbuj wydrukować dziennik błędów 'console.log (błąd)' – bananaappletw

Odpowiedz

0

Wygląda jak problem z SSL, najlepszym sposobem na poprawienie SSL środowiska sieciowego.


Teraz można obejść problem poprzez rejectUnauthorized jak false

const request = require("request"); 
const https = require('https'); 
const agentOptions = { 
    host: 'en.m.wikipedia.org', 
    port: '443', 
    path: '/wiki/Astrid_Olofsdotter_of_Sweden', 
    rejectUnauthorized: false 
}; 
const agent = new https.Agent(agentOptions); 

const postOption = { 
    method: 'GET', 
    agent: agent, 
    uri: 'https://en.m.wikipedia.org/wiki/Astrid_Olofsdotter_of_Sweden' 
}; 

request(postOption, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body); 
    } 
}); 
-1

można ominąć https za pomocą poniższego polecenia:

npm config set strict-ssl false 

Ustawianie ścisłe-ssl fałszywe zezwala na cały serwer węzła aby uzyskać dostęp do dowolnego adresu URL.

lub ustaw adres rejestru z https lub http jak poniżej:

npm config set registry="http://registry.npmjs.org/" 

Uwaga: Jednak Osobiście wierzę pominięciem https nie jest prawdziwym rozwiązaniem, ale możemy użyć go jako obejście.

Mam nadzieję, że to pomoże.

+1

Nie używając SSL nie jest tak naprawdę odpowiedzią na pytanie, jak ci się wydaje, na podstawie twojej notatki. Przypuszczalnie arun chce mieć SSL w swojej aplikacji. Również w komentarzach do pytania, arun mówi, że po dodaniu strictSSL: false do opcji błąd nadal istnieje. – regdoug

3

To może być do wielu rzeczy, Ive uruchomić kod i grzywny dla mnie

node --version 
v0.12.5 

więc patrzę na

  1. wersję nodejs używasz

okresowo aktualizowane są certyfikaty główne, sugerowałbym aktualizację, ponieważ prawdopodobnie używany certyfikat jest nowszy niż certyfikaty główne w twojej dystrybucji i d jest więc pokazywanie jako niezaufane

  1. sieć - jego możliwe, że jesteś za serwerem proxy, który robi coś nieoczekiwanego ze swoich żądań

  2. serwer docelowy, to mógłby być powrót coś niespodziewanego.

Najprawdopodobniej jest to 1, że używasz wersji nodejs, która nie rozpoznaje dostawcy certyfikatu witryny i dlatego twierdzi, że jest niezaufany.

Położyłbym 2 i 3 na tym samym poziomie prawdopodobieństwa.jeśli przeglądasz wikipedię, możliwe, że zablokował cię/popchnął na stronę błędu, gdzie certyfikat może nie być ważny.

Podczas gdy możesz, jak sugerowały inne plakaty, wyłączyć weryfikację, odradzam to jako nawyk. I nigdy nie rób tego w środowisku produkcyjnym.

Jedyny przypadek, w którym łamam tę zasadę, dotyczy certyfikatów z podpisem własnym na komputerach lokalnych.

0

Bardzo bliska odpowiedź znajduje się here.

Szczegółowa odpowiedź na to pytanie brzmi: &: here.

polecam następujące:

Przed skontaktowaniem https.request() zestaw:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 

W opcjach agenta, ustaw:

const agentOptions = {  
    ... 
    rejectUnauthorized: false 
}; 

również zapoznać się z documentation for TLS/SSL of request library.

Powiązane problemy