dodanie certyfikatu SSL tylko dla Github (nie wszystkie certyfikaty z pakietu ca-certyfikatów)


13

Podczas uzyskiwania dostępu do Github przez HTTPS pojawia się następujący błąd:

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

To dlatego, że nie mam żadnych certyfikatów /etc/ssl/certs/. Wiem, jak rozwiązać ten problem. Mogę zainstalować pakiet ca-certificatesz repozytorium Debiana. Problem polega jednak na tym, że spowoduje to zainstalowanie wszystkich certyfikatów (tysięcy), których niekoniecznie chcę zaakceptować / zaufać.

Jak mogę zainstalować certyfikat tylko dla Github?

podproblem / Subquestion

Na innym komputerze, na którym pakiet ca-certificatesjest już zainstalowany i działa git, zauważyłem, że niektóre certyfikaty /etc/ssl/certs/to jeden certyfikat na plik, a inne to wiele certyfikatów w jednym pliku. Konkretny plik zawierający certyfikat Github /etc/ssl/certs/ca-certificates.crtzawiera ponad 150 innych certyfikatów:

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

Jak mogę znaleźć, który z tych 159 certyfikatów jest tym, którego potrzebuję? (inne niż brutalna siła - przecinanie pliku na pół i sprawdzanie obu połówek, powtarzanie while n > 1).


Co próbujesz osiągnąć Programowo kontaktujesz się z GitHub?
Nate W.

Czy próbowałeś pobrać pakiet źródłowy, a następnie wyodrębnić tylko certyfikat, który chcesz?
jayhendren

Czego używasz, aby uzyskać dostęp do github? jakieś narzędzie wiersza poleceń? przeglądarka?
Łk

Odpowiedzi:


13

Aby uzyskać dostęp do Github, musisz to zrobić przez ssh. Musisz więc dodać swój klucz publiczny ssh do github. Następnie możesz uzyskać dostęp do github przez ssh, tj .:

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

Zobacz także: Github: generowanie kluczy ssh , WikiHow

[Edytuj # 1]

bez kontroli certyfikatu:

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

lub uwierzytelnione

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

Dla mnie wciąż nie jest jasne, o co prosisz, ponieważ wiesz, że zainstalowanie ca-certyfikatów rozwiąże problem.

[Edytuj # 2]

Ok, drugie pytanie brzmiało

jak mieć tylko certyfikat potrzebny do uzyskania dostępu do github.com przez https

  1. Otwórz przeglądarkę i przejdź do https://github.com/ . Kliknij na zieloną nazwę po lewej stronie https://i kliknij Certificates. Na Detailskarcie zobaczysz łańcuch certyfikatów, który jest:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Wyeksportuj każdy certyfikat DigiCert do pliku.

  3. skopiuj pliki do /etc/ssl/certs/
  4. uruchom, do c_rehashktórego kota wszystkie certyfikatyca-certificates.crt
  5. skończyłeś.

Jak powiedziałem, nie jestem przyjacielem takich działań, ponieważ github może zmienić CA w dowolnym momencie, więc zawsze spowoduje to dodatkową pracę.


1
Dziękuję za sugestię. Ale chciałbym uzyskać dostęp githubza pośrednictwem https.
Martin Vegter

1

Jak zasugerowano wcześniej, można użyć kluczy SSH, zamiast polegać na HTTPS, aby uniknąć tego problemu i prawdopodobnie cieszyć się większym bezpieczeństwem.

Powiedziawszy to, myślę, że szukasz tego, jak zainstalować certyfikaty root / CA w / etc / ssl / certs. W skrócie, nie wystarczy po prostu zrzucić plik zakodowany w PEM do / etc / ssl / certs - musisz także obliczyć skrót tego certyfikatu i utworzyć dowiązanie symboliczne w / etc / ssl / certs do tego certyfikatu plik. Nazwa dowiązania symbolicznego musi być skrótem z rozszerzeniem .0 lub jeśli występuje kolizja skrótu, .1 itd.

Oto szczegółowy opis, a także przykładowy skrypt, którego można użyć do zautomatyzowania procesu: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

Mam nadzieję, że tego właśnie szukałeś, ale jak powiedziałem wcześniej, klucze SSH są prawdopodobnie „lepszym” rozwiązaniem. :)


c_rehashrobi to, co wyjaśniłeś. Zobacz c_rehashstronę podręcznika man. BTW: nie ma potrzeby obliczania skrótów. Catting certyfikatów do ca-certyfikatów.crt jest wystarczający, ponieważ gitczyta tylko ten plik. Ponadto link wyjaśnił, jak ręcznie uzyskać certyfikaty za pomocą openssl. Jest to bardzo wątpliwe i prowokuje człowieka w środkowym ataku. Nie poleciłbym tego.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.