chỉ thêm chứng chỉ SSL cho Github (không phải tất cả chứng chỉ từ gói ca-chứng chỉ)


13

Tôi gặp lỗi sau khi truy cập Github qua HTTPS:

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Điều này là do tôi không có bất kỳ chứng chỉ nào /etc/ssl/certs/. Tôi biết làm thế nào để khắc phục vấn đề này. Tôi có thể cài đặt gói ca-certificatestừ kho Debian. Tuy nhiên, vấn đề là điều này sẽ cài đặt tất cả các chứng chỉ (hàng nghìn) mà tôi không nhất thiết muốn chấp nhận / tin tưởng.

Làm cách nào tôi có thể cài đặt chứng chỉ cho Github?

một tiểu dự án / truy vấn con

Trên một máy khác, nơi gói ca-certificatesđã được cài đặt và git hoạt động, tôi đã nhận thấy rằng một số chứng chỉ trong /etc/ssl/certs/là một chứng chỉ cho mỗi tệp và các chứng chỉ khác là nhiều chứng chỉ trong một tệp. Tệp cụ thể chứa chứng chỉ Github, /etc/ssl/certs/ca-certificates.crtchứa hơn 150 chứng chỉ khác:

$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159

Làm thế nào tôi có thể tìm thấy một trong số 159 chứng chỉ này là chứng chỉ tôi cần? (khác với lực lượng vũ phu - cắt tập tin thành hai nửa và kiểm tra cả hai nửa, lặp lại while n > 1).


Bạn đang cố gắng để thực hiện? Liên hệ với GitHub theo chương trình?
Nate W.

Bạn đã thử tải xuống gói nguồn và sau đó chỉ trích xuất chứng chỉ bạn muốn?
jayhendren

Bạn đang sử dụng gì để truy cập github? một số công cụ dòng lệnh? một trình duyệt?
lk-

Câu trả lời:


13

Để truy cập Github của bạn, bạn cần thực hiện thông qua ssh. Vì vậy, bạn cần thêm khóa công khai ssh của bạn vào github. Sau đó, bạn có thể truy cập github qua ssh tức là:

git init git@github.com:yourname/yourrepo.git

Xem thêm: Github: tạo khóa ssh , WikiHow

[Chỉnh sửa # 1]

không có kiểm tra chứng chỉ:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

hoặc xác thực

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

Đối với tôi vẫn chưa rõ bạn đang yêu cầu điều gì, vì bạn biết rằng việc cài đặt chứng chỉ ca sẽ khắc phục vấn đề.

[Chỉnh sửa # 2]

Ok, câu hỏi khác là

làm thế nào để chỉ có chứng chỉ cần thiết để truy cập github.com qua https

  1. Mở trình duyệt của bạn và điều hướng đến https://github.com/ . Klick trên tên màu xanh bên trái https://và klick trên Certificates. Trên Detailstab, bạn sẽ thấy chuỗi chứng chỉ, đó là:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Xuất từng chứng nhận DigiCert vào một tệp.

  3. sao chép các tập tin vào /etc/ssl/certs/
  4. chạy c_rehashcon mèo nào tất cả các chứng chỉca-certificates.crt
  5. Bạn xong việc rồi.

Như tôi đã nói, tôi không phải là bạn của những hành động như vậy bởi vì github có thể thay đổi CA bất cứ lúc nào, vì vậy nó sẽ luôn dẫn đến công việc bổ sung.


1
Cảm ơn vì đã góp ý. Nhưng tôi muốn truy cập githubthông qua https.
Martin Vegter

1

Như đã đề xuất trước đây, bạn có thể sử dụng các khóa SSH, thay vì dựa vào HTTPS để tránh vấn đề này, và có thể nói, hãy tận hưởng bảo mật tốt hơn.

Phải nói rằng, tôi nghĩ những gì bạn đang tìm kiếm là làm thế nào để cài đặt chứng chỉ root / CA trong / etc / ssl / certs. Tóm lại, chỉ cần đổ tệp được mã hóa PEM vào / etc / ssl / certs - bạn cũng phải tính toán hàm băm của chứng chỉ đã nói và tạo một liên kết tượng trưng trong / etc / ssl / certs cho chứng chỉ đó tập tin. Tên của symlink, phải là hàm băm có hậu tố là 0 hoặc nếu có xung đột băm, .1, v.v.

Đây là một bản ghi chi tiết, cũng như một tập lệnh mẫu mà bạn có thể sử dụng để tự động hóa quy trình: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certert

Hy vọng đây là những gì bạn đang tìm kiếm, nhưng như tôi đã nói trước đó, các khóa SSH có lẽ là giải pháp "tốt hơn". :)


c_rehashđang làm những gì bạn giải thích. Xem c_rehashtrang người đàn ông. BTW: không cần tính băm. Định dạng các certs đến ca-cert.crt là đủ, vì gitchỉ đọc tệp này. Hơn nữa, liên kết giải thích làm thế nào để lấy chứng chỉ bằng tay với openssl. Điều này rất đáng nghi ngờ và kích động một người đàn ông trong cuộc tấn công giữa. Tôi sẽ không đề nghị nó.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.