2012-01-15 12 views
48

Mam maszynę wirtualną Ubuntu, która ma problemy z połączeniem się z witrynami z ssl, tzn. Https. Może skutecznie pobierać artefakty z Internetu, jeśli adres URL zaczyna się od http.npm zainstalować bez ssl

Instalacja npm spowoduje pobranie zależności przez https. Czy mimo to możesz pobrać go przez http?

+0

Jakie błędy występują podczas pobierania za pomocą protokołu HTTPS? – Bruno

+0

Zawiesza się na chwilę, a potem dostaję -> https://gist.github.com/1619128 –

+0

Zamiast publikować ten komunikat o błędzie na gist.gitub, powinieneś edytować swoje pytanie i tam je umieścić. Jednak nie mówi nic o HTTPS. Coś w dodatkowych dziennikach? – Bruno

Odpowiedz

123

Spróbuj zmienić rejestr wersji http raczej, że domyślne https jeden za pomocą polecenia

npm config set registry http://registry.npmjs.org/ 
+3

Zauważ, że musisz zrobić to samo z dodatkowym 'sudo' jeśli chcesz zainstalować pakiety globalne z flagą' -g' – lordvlad

+0

, która rozwiązała mój problem i może być pomocna dla każdego, kto jest również za firewallem proxy/webowym i otrzymuje błędy podczas instalacji na "SSL23_GET_SERVER_HELLO". – meklarian

+0

Zrobiłem to i nadal otrzymuję ten sam błąd. Log pokazuje, że npm wysyła zapytania używając http, ale nadal otrzymuję nie znany protokół ssl – FrenchFigaro

10

Jak conlinf powiedział następujące powinny działać:

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

Teraz, aby dodać moje słowo, należy również wziąć pod uwagę, że pobieranie bez ssl pozwala na atak typu "man-in-the-middle". Dodaje tylko ostrzeżenie dla osób, które przeczytają post.

Jeśli jesteś samodzielnym programistą, nie powinno być problemu z pobieraniem bezpośrednio w http, ale gdybym chciał zaatakować firmę za pomocą node.js, rozważabym dostarczenie złośliwego kodu przez npm ... I wykonanie takiego ataku bez ssl będzie znacznie łatwiejsze.

+0

Czy możesz wyjaśnić, jak to zrobić? – Mukus

+2

@Mukus DNS został naruszony wiele razy, konfigurując lokalny nieuczciwy DNS, przejmując kontrolę nad "serwerami docelowymi" "register.npmjs.org". Ponieważ nie ma TLS, nie istnieje weryfikacja uzgadniania serwera npm poprzez podpisywanie certyfikatu z uprawnieniami root. Serwer rouge npm za routerem DNS może dostarczyć dowolny kod, który jest uruchamiany podczas instalacji npm. – thesmart

+0

+1 ze względów bezpieczeństwa. Miałem problemy z npm przez 'https' w pracy, zalogowanie się do naszej VPN rozwiązało problem dla mnie. – Roy

2

Po wielu próbach i błędach stwierdziłem, że oprócz wszystkiego, co zostało powiedziane powyżej, muszę również ustawić wartość https-proxy na wartość http proxy.

Więc plik koniec .npmrc wygląda

proxy=http://username:[email protected]:port/ 
https-proxy=http://username:[email protected]:port/ 
strict-ssl=false 
registry=http://registry.npmjs.org/ 

Zauważ, że proxy i proxy HTTPS są identyczne!

Zobacz komentarze do tego wątku, aby uzyskać więcej informacji:

https://github.com/npm/npm/issues/8034

również wpadłem npm cache clean --force po aktualizacji npmrc środek na dobre, ale nie jestem pewien, czy jest to konieczne.

Nadzieję, że pomaga.

+0

ustawienie wartości http_proxy na https_proxy działało dla mnie. Dzięki. – mmk

Powiązane problemy