2012-01-15 51 views
48

Tôi có máy ảo Ubuntu đang gặp sự cố khi kết nối với các trang web bằng ssl, tức là https. Nó có thể tải xuống thành công các đồ tạo tác từ internet nếu url bắt đầu bằng http.npm cài đặt mà không cần ssl

npm cài đặt sẽ tải xuống các phụ thuộc qua https. Có anyway làm cho nó tải về thông qua http?

+0

Bạn gặp phải lỗi nào khi tải xuống bằng HTTPS? – Bruno

+0

Nó bị treo trong một thời gian, sau đó tôi nhận được điều này -> https://gist.github.com/1619128 –

+0

Thay vì đăng thông báo lỗi này lên gist.github, bạn nên chỉnh sửa câu hỏi của mình và đặt câu hỏi ở đó. Tuy nhiên, nó không nói gì về HTTPS. Bất cứ điều gì trong các bản ghi bổ sung? – Bruno

Trả lời

123

Hãy thử thay đổi registry lên phiên bản http đúng hơn là https mặc định một cách sử dụng lệnh

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

thông báo rằng bạn cần phải giống với 'sudo' bổ sung nếu bạn muốn cài đặt các gói toàn cầu với cờ' -g' – lordvlad

+0

, điều này đã khắc phục được sự cố của tôi và có thể hữu ích cho bất kỳ ai khác cũng đang sử dụng tường lửa proxy/web và đang gặp lỗi tại 'SSL23_GET_SERVER_HELLO' khi cài đặt. – meklarian

+0

Tôi đã làm điều đó và vẫn nhận được cùng một lỗi. Nhật ký cho thấy rằng các truy vấn npm sử dụng http nhưng tôi vẫn nhận được giao thức chưa được giải quyết ssl – FrenchFigaro

10

Như conlinf nói, sau đây nên làm việc:

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

Bây giờ, để thêm từ của tôi, bạn cũng nên xem xét rằng tải xuống mà không có ssl cho phép một cuộc tấn công man-in-the-middle. Nó chỉ là để thêm một cảnh báo cho những người sẽ đọc bài viết.

Nếu bạn là nhà phát triển solo, không nên gặp khó khăn khi tải xuống trực tiếp http, nhưng nếu tôi muốn tấn công một công ty bằng cách sử dụng node.js, tôi sẽ xem xét cung cấp mã độc thông qua npm ... ssl sẽ dễ dàng hơn nhiều.

+0

Bạn có thể giải thích cách bạn thực hiện việc này không? – Mukus

+2

@Mukus DNS đã bị xâm nhập nhiều lần bằng cách thiết lập DNS giả mạo cục bộ, do đó chiếm đoạt "registry.npmjs.org" cho các máy chủ đích. Vì không có TLS, nên không có sự thẩm tra bắt tay của máy chủ npm thông qua việc ký chứng chỉ với quyền root. Các máy chủ nou rouge đằng sau DNS rouge có thể cung cấp bất kỳ mã nào nó muốn, được chạy trong khi cài đặt npm. – thesmart

+0

+1 vì lý do bảo mật. Tôi đã gặp vấn đề với npm trên 'https' tại nơi làm việc, việc đăng nhập vào VPN của chúng tôi đã giải quyết được vấn đề cho tôi. – Roy

2

Sau nhiều lần thử và lỗi, tôi thấy rằng ngoài tất cả những gì đã nói ở trên, tôi cũng cần đặt https-proxy thành giá trị của http proxy.

Vì vậy, tập cuối .npmrc trông giống như

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

Lưu ý rằng proxy và https-proxy là giống hệt nhau!

Xem các ý kiến ​​về chủ đề này để biết thêm:

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

Ngoài ra tôi chạy một npm cache clean --force sau khi cập nhật npmrc cho biện pháp tốt, nhưng tôi không chắc chắn nếu nó là bắt buộc.

Hy vọng điều đó sẽ hữu ích.

+0

đặt giá trị http_proxy thành https_proxy làm việc cho tôi. Cảm ơn. – mmk

Các vấn đề liên quan