2011-11-14 5 views
6

Tôi muốn sử dụng repo git có thể truy cập thông qua https, máy chủ Https có chứng chỉ tự ký. Tôi luôn luôn nhận được một lỗi khi cố gắng sao chép các repo với nhật thực toàn phần + egit:egit với chứng chỉ tự ký, https

https://host/path: không mở git-upload-pack sun.security.validator.ValidatorException có thể: PKIX xây dựng con đường thất bại: sun.security. provider.certpath.SunCertPathBuilderException: không thể tìm đường dẫn chứng nhận hợp lệ cho mục tiêu được yêu cầu

Có thể bỏ qua vấn đề này không? Tôi đã sử dụng lệnh export GIT_SSL_NO_VERIFY=1 để bỏ qua xác minh ssl với trình điều khiển máy khách. Thủ thuật này không hoạt động với nhật thực.

Cảm ơn,

Hubi

Trả lời

11

Bạn cũng có thể chỉ cần đặt eGit để bỏ qua xác minh máy chủ. Trong Eclipse, hãy vào Window -> Preferences.

Từ đó đi về Team -> Git -> Cấu hình

Bấm "New Entry"

chính: http.sslVerify Value: false

Nhấp "OK"

Bấm "OK"

Để biết cách tiếp cận chi tiết hơn, hãy xem bài đăng trên blog của tôi tại đây: http://www.pur-logic.com/2012/04/21/egit-self-signed-certificate/

+0

Đây có phải là vấn đề tương tự nếu địa chỉ IP được sử dụng thay vì tên máy chủ không? – Chris

+2

Như đã nêu trong nhiều câu trả lời liên quan đến chủ đề "chứng chỉ tự ký và git" bằng cách sử dụng 'http.sslVerify: false' là một thực tế khủng khiếp từ bảo mật PoV ** và nên là một phương sách cuối cùng tuyệt đối, đặc biệt là có tùy chọn. Câu trả lời này giải quyết vấn đề và mở ra cho người khác, thường được coi là nghiêm trọng hơn nhiều. Nhưng hey, tin tặc phải ăn quá, phải không? :) Vấn đề gốc ở đây là chứng chỉ tự ký không được tin cậy bởi java được sử dụng bởi egit/eclipse. Và giải pháp đơn giản là đăng ký nó trong cacert. – shturec

+0

+1 @shturec! Bạn không tắt xác minh ssl cho một trang web, nhưng TẤT CẢ các trang web khi bạn thực hiện việc này. Đó là một giải pháp khủng khiếp và rất không an toàn. –

5

Bạn phải nhập chứng chỉ đó vào keystore của mình (hoặc là cacerts keystore mặc định trong thư mục JDK của bạn hoặc bạn chỉ định một với tham số -Djavax.net.ssl.trustStore) .

+0

Không giống như câu trả lời của tác giả đã chọn một điều này không có lỗ hổng bảo mật mở và nên là ưu tiên một vì nó là một giải pháp cho vấn đề chính xác ở đây - java được sử dụng bởi egit không nhận ra chứng chỉ là đáng tin cậy. – shturec

0

Các FAQ of CAcert cung cấp các dòng lệnh cho keytool:

keytool -keystore $/PATH/TO/CACERTS/KEYSTORE -storepass changeit -import -trustcacerts -v -alias cacertclass1 -file root.crt 
  • Cuối cùng bạn cần phải bỏ -trustcacerts để nhập khẩu một giấy chứng nhận bình thường.
  • -alias cũng có thể là không cần thiết
0

Tôi cũng gặp vấn đề với điều này, nhưng với một câu chuyện khác. Tên máy chủ cho repo Git không khớp với tên máy chủ của cert. Giải pháp là thay đổi cert để khớp với tên máy chủ.

+0

Bạn có thể giải thích cách bạn đã làm điều này? Tôi nghĩ đây cũng là vấn đề của tôi –