yalnızca Github için SSL sertifikası ekleme (ca-certificate paketindeki tüm sertifikalar değil)


13

HTTPS üzerinden Github'a erişirken aşağıdaki hatayı alıyorum:

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

Çünkü herhangi bir sertifikam yok /etc/ssl/certs/. Bu sorunu nasıl çözeceğimizi biliyorum. Paketi ca-certificatesDebian deposundan kurabilirim . Ancak sorun, kabul etmek / güvenmek istemediğim tüm sertifikaları (binlerce) yükleyecek olmasıdır.

Yalnızca Github için sertifikayı nasıl yükleyebilirim?

a Alt Sorun / Alt Soru

Paketin ca-certificateszaten yüklü olduğu ve git'in çalıştığı başka bir makinede, bazı sertifikaların /etc/ssl/certs/dosya başına bir sertifika ve diğerlerinin de bir dosyada çok sayıda sertifika olduğunu fark ettim . Github sertifikasını içeren belirli dosya /etc/ssl/certs/ca-certificates.crt150'den fazla sertifika daha içerir:

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

Bu 159 sertifikadan hangisinin ihtiyacım olduğunu nasıl bulabilirim? (kaba kuvvet dışında - dosyayı yarıya bölmek ve her iki yarıyı da kontrol etmek, tekrarlamak while n > 1).


Ne yapmaya çalışıyorsun? GitHub'a programsal olarak başvurma?
Nate W.

Kaynak paketi indirip yalnızca istediğiniz sertifikayı çıkarmayı denediniz mi?
jayhendren

Github'a erişmek için ne kullanıyorsunuz? bazı komut satırı aracı? bir tarayıcı?
lk-

Yanıtlar:


13

Github'ınıza erişmek için bunu ssh üzerinden yapmanız gerekir. Yani ssh genel anahtarınızı github'a eklemeniz gerekir. Bundan sonra github'a ssh üzerinden erişebilirsiniz:

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

Ayrıca bakınız: Github: ssh anahtarları oluşturma , WikiHow

[Düzenle # 1]

sertifika kontrolleri olmadan:

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

veya doğrulanmış

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

Benim için hala ne istediğini net değil, çünkü ca-sertifikaları yüklemenin sorunu çözeceğini biliyorsun.

[Düzenle # 2]

Tamam, diğer soru

https üzerinden github.com sitesine erişmek için gereken sertifikaya nasıl sahip olunur

  1. Tarayıcınızı açın ve https://github.com/ adresine gidin . Soldaki yeşil isme https://tıklayın ve tıklayın Certificates. On Detailssekmesi, sizsiniz sertifika zinciri, göreceksiniz:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Her DigiCert sertifikasını bir dosyaya aktarın.

  3. dosyaları kopyala /etc/ssl/certs/
  4. c_rehashhangi kedi tüm sertifikaları çalıştırmakca-certificates.crt
  5. bitirdiniz.

Dediğim gibi, bu tür eylemlerin bir arkadaşı değilim, çünkü github CA'ları her zaman değiştirebilir, bu yüzden her zaman ek çalışmalara neden olur.


1
Öneri için teşekkürler. Ama githubüzerinden erişmek istiyorum https.
Martin Vegter

1

Daha önce önerildiği gibi, bu sorunu önlemek için HTTPS'ye güvenmek yerine SSH anahtarlarını kullanabilirsiniz ve tartışmasız daha iyi güvenlikten yararlanabilirsiniz.

Bunu söyledikten sonra, aradığınız şeyin / etc / ssl / certs dizinine root / CA sertifikalarının nasıl kurulacağını düşünüyorum. Özetle, PEM kodlu dosyayı / etc / ssl / certs içine dökmek yeterli değildir - ayrıca söz konusu sertifikanın karmasını hesaplamanız ve bu sertifikaya / etc / ssl / certs içinde bir sembolik bağlantı oluşturmanız gerekir. dosya. Symlink'in adı, .0 ile eklenmiş karma olmalı ya da bir karma çarpışması varsa, .1 vb. Olmalıdır.

İşlemi otomatikleştirmek için kullanabileceğiniz ayrıntılı bir yazı ve örnek bir komut dosyası: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

Umarım aradığınız şey budur, ancak daha önce de söylediğim gibi SSH anahtarları muhtemelen "daha iyi" bir çözümdür. :)


c_rehashaçıkladığın şeyi yapıyor. Bkz c_rehash. Sayfa. BTW: karmaları hesaplamaya gerek yoktur. gitYalnızca bu dosyayı okuduğu için sertifikaları ca-certificate.crt dosyasına yerleştirmek yeterlidir . Ayrıca link, openssl ile sertifikaların manuel olarak nasıl alınacağını açıkladı. Bu çok şüphelidir ve orta saldırıda bir adamı kışkırtır. Ben tavsiye etmem.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.