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-certificates
z 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-certificates
jest 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.crt
zawiera 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
).
źródło
Odpowiedzi:
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 .:
Zobacz także: Github: generowanie kluczy ssh , WikiHow
[Edytuj # 1]
bez kontroli certyfikatu:
lub uwierzytelnione
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
Otwórz przeglądarkę i przejdź do https://github.com/ . Kliknij na zieloną nazwę po lewej stronie
https://
i kliknijCertificates
. NaDetails
karcie zobaczysz łańcuch certyfikatów, który jest:Wyeksportuj każdy certyfikat DigiCert do pliku.
/etc/ssl/certs/
c_rehash
którego kota wszystkie certyfikatyca-certificates.crt
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ę.
źródło
github
za pośrednictwemhttps
.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. :)
źródło
c_rehash
robi to, co wyjaśniłeś. Zobaczc_rehash
stronę podręcznika man. BTW: nie ma potrzeby obliczania skrótów. Catting certyfikatów do ca-certyfikatów.crt jest wystarczający, ponieważgit
czyta 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.