2013-09-23 122 views
34

tôi nhận được lỗi sau chạy curl https://npmjs.org/install.sh | sh trên Mac OSX 10.9 (Mavericks):Làm thế nào để sửa chữa curl: (60) giấy chứng nhận SSL: Invalid chuỗi chứng chỉ

install [email protected] 
curl: (60) SSL certificate problem: Invalid certificate chain 
More details here: http://curl.haxx.se/docs/sslcerts.html 

Làm thế nào để sửa lỗi này?

+0

Tập lệnh cài đặt npm cố gắng kết nối với https://registry.npmjs.org có lỗi chứng chỉ. Các hướng dẫn của tôi bên dưới giải quyết vấn đề này. –

Trả lời

64

Sử dụng trình duyệt Safari (không Chrome, Firefox hay Opera) trên Mac OS X 10.9 (Mavericks) thăm https://registry.npmjs.org

Screenshot of Safari showing certificate error

Nhấp vào nút Show giấy chứng nhận và sau đó kiểm tra hộp kiểm có nhãn Luôn tin tưởng. Sau đó nhấp vào Tiếp tục và nhập mật khẩu của bạn nếu cần.

Always trust checkbox

Curl giờ đây nên làm việc với URL đó một cách chính xác.

+0

Có vẻ như không hoạt động đối với https://npmjs.org/install.sh; chỉ cần tải xuống tệp – user456584

+1

Chắc chắn. Có vẻ như chứng chỉ hợp lệ cho https://npmjs.org nhưng không hợp lệ với https://registry.npmjs.org. Nếu bạn nhìn vào nguồn của install.sh nó cố gắng sử dụng curl để sau đó tải về từ https://registry.npmjs.org. Vì vậy, bạn cần truy cập https://registry.npmjs.org thay vì https://npmjs.org để kích hoạt lỗi chứng chỉ, nơi bạn có thể chọn để tin tưởng chứng chỉ. –

+1

Tôi không thể chạy "curl https://npmjs.org/install.sh | sh" cho đến khi tôi thực hiện việc này. Bạn là một người cứu sống! – mmmeff

13

Trước hết, bạn nên cảnh giác với các url phát sinh lỗi SSL. Điều đó đang được nói, bạn có thể ngăn chặn các lỗi chứng chỉ trong curl với

curl -k https://insecure.url/content-i-really-really-trust 
+1

Đó phải là câu trả lời đúng. – onalbi

+0

@onalbi đã đồng ý ... – slumtrimpet

8

Sau khi cập nhật lên OS X 10.9.2, tôi bắt đầu có vấn đề chứng chỉ SSL hợp lệ với Homebrew, Textmate, RVM, và Github.

Khi tôi bắt đầu một brew update, tôi đã nhận được báo lỗi sau:

fatal: unable to access 'https://github.com/Homebrew/homebrew/': SSL certificate problem: Invalid certificate chain 
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master 

tôi đã có thể làm giảm bớt một số vấn đề bằng cách chỉ vô hiệu hóa việc xác minh SSL trong Git. Từ giao diện điều khiển (vỏ a.k.a. hoặc thiết bị đầu cuối):

git config --global http.sslVerify false 

Tôi Leary đề nghị này vì nó đánh bại mục đích của SSL, nhưng nó là lời khuyên duy nhất tôi đã tìm thấy rằng làm việc trong một pinch.

tôi đã cố gắng rvm osx-ssl-certs update all trong đó nêu Already are up to date.

Trong Safari, tôi đến thăm https://github.com và cố gắng thiết lập các giấy chứng nhận bằng tay, nhưng Safari không trình bày các tùy chọn để tin tưởng vào giấy chứng nhận.

Cuối cùng, tôi phải đặt lại trình duyệt Safari (Safari-> Đặt lại trình đơn Safari ...). Sau đó, sau đó truy cập github.com và chọn chứng chỉ và "Luôn tin tưởng" này cảm thấy sai và xóa lịch sử và mật khẩu được lưu trữ, nhưng nó đã giải quyết vấn đề xác minh SSL của tôi. Một chiến thắng buồn bã.

+1

Đặt cấu hình git --global http.sslVerify false đã giúp tôi với chứng chỉ tự ký của chúng tôi vì tôi không có tệp chuỗi. – djneely

+0

Tôi đã thử điều này trên Mavericks và xóa chứng chỉ DigiCert High Assurance EV Root CA và đặt lại safari đã khắc phục được sự cố của tôi. – Maverick

+1

'cập nhật rvm osx-ssl-certs tất cả' đã sửa nó cho tôi. Cảm ơn! – jefflunt

3

Một nguyên nhân khác có thể là các khóa trùng lặp trong KeyChain của bạn. Tôi đã nhìn thấy vấn đề này trên hai máy mac, nơi có bản sao "DigiCert cao đảm bảo EV gốc CA". Một là trong keychain đăng nhập, cái còn lại trong hệ thống một. Việc xóa chứng chỉ khỏi keychain đăng nhập đã giải quyết được sự cố.

Trình duyệt Safari bị ảnh hưởng này cũng như git trên dòng lệnh.

+1

+1 vì đây là vấn đề chính xác của tôi. Gốc chắc chắn là đáng tin cậy, nhưng tôi đã có hai bản sao của "DigiCert High Assurance EV Root CA" bằng cách nào đó. – tomo

17

Sự cố là chứng chỉ trung gian đã hết hạn không còn được sử dụng và phải bị xóa. Đây là một bài đăng trên blog của Digicert giải thích vấn đề và cách giải quyết nó.

https://blog.digicert.com/expired-intermediate-certificate/

Tôi đã nhìn thấy vấn đề với Github không tải qua SSL trong cả Safari và các dòng lệnh với git pull. Một khi tôi đã xóa tất cả mọi thứ đã hết hạn cert đã được tốt.

+3

Đây là câu trả lời đúng nhất, cảm ơn! – Viktor

+0

Ngoài việc thêm chứng chỉ trung gian và xóa các chứng chỉ đã hết hạn, tôi cũng cần xóa chứng chỉ đã được ký bởi cơ quan không xác định. Chúng có thể được tìm thấy trong ** "Đăng nhập" ** Keychains. Họ sử dụng cùng biểu tượng với các chứng chỉ không hết hạn. Vì vậy, bạn cần phải làm nổi bật từng cái một (xem [hình ảnh] (http://i.stack.imgur.com/4ZJoY.png)). Các chứng chỉ này được thêm khi bạn nhấp vào "Tiếp tục" để cảnh báo trình duyệt. – Dida

1

Tôi bắt đầu thấy lỗi này sau khi cài đặt bản cập nhật công cụ dòng lệnh mới nhất (6.1) trên Yosemite (10.10.1). Trong trường hợp cụ thể này, khởi động lại hệ thống đã sửa lỗi (tôi chưa khởi động lại từ khi cập nhật).

Đề cập đến điều này trong trường hợp bất kỳ ai có cùng vấn đề đều gặp phải trang này, như tôi đã làm.

3

LƯU Ý: Câu trả lời này rõ ràng là đánh bại mục đích của SSL và nên được sử dụng một cách tiết kiệm như một phương sách cuối cùng.

Đối với những người gặp vấn đề với các kịch bản mà tải về các kịch bản mà tải về kịch bản và muốn có một sửa chữa nhanh chóng, tạo ra một tập tin gọi là ~/.curlrc

Với các nội dung

--insecure 

Điều này sẽ gây curl để bỏ qua vấn đề chứng chỉ SSL theo mặc định.

Đảm bảo bạn xóa tệp khi hoàn tất.

CẬP NHẬT

12 ngày sau đó tôi đã thông báo về một upvote về câu trả lời này, mà làm cho tôi đi "Hmmm, tôi đã làm theo lời khuyên của riêng tôi nhớ để xóa .curlrc?", Và phát hiện ra tôi hadn' t. Vì vậy, điều đó thực sự nhấn mạnh cách dễ dàng để thoát khỏi sự không an toàn của bạn bằng cách làm theo phương pháp này.