menambahkan sertifikat SSL hanya untuk Github (tidak semua sertifikat dari paket ca-sertifikat)

13

Saya mendapatkan kesalahan berikut saat mengakses Github melalui HTTPS:

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

Ini karena saya tidak memiliki sertifikat /etc/ssl/certs/. Saya tahu cara memperbaiki masalah ini. Saya dapat menginstal paket ca-certificatesdari repositori Debian. Masalahnya adalah, bagaimanapun, ini akan menginstal semua sertifikat (ribuan) yang saya tidak ingin terima / percayai.

Bagaimana saya bisa menginstal sertifikat hanya untuk Github?

Subproblem / Subquestion

Di komputer lain, di mana paket ca-certificatessudah diinstal dan git berfungsi, saya perhatikan bahwa beberapa sertifikat dalam /etc/ssl/certs/satu-sertifikat-per-file dan lainnya banyak-sertifikat-dalam-satu-file. File tertentu yang berisi sertifikat Github, /etc/ssl/certs/ca-certificates.crtberisi lebih dari 150 sertifikat lainnya:

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

Bagaimana saya bisa menemukan yang mana dari 159 sertifikat ini yang saya butuhkan? (Selain kekuatan kasar - mengiris file menjadi dua bagian dan memeriksa kedua bagian, mengulangi while n > 1).

Martin Vegter
sumber
Apa yang ingin Anda capai? Menghubungi GitHub secara terprogram?
Nate W.
Sudahkah Anda mencoba mengunduh paket sumber dan kemudian hanya mengekstrak sertifikat yang Anda inginkan?
jayhendren
Apa yang Anda gunakan untuk mengakses github? beberapa alat baris perintah? sebuah browser?
lk-

Jawaban:

13

Untuk mengakses Github, Anda perlu melakukannya melalui ssh. Jadi, Anda perlu menambahkan kunci publik ssh ke github. Setelah itu Anda dapat mengakses github melalui ssh yaitu:

git init [email protected]:yourname/yourrepo.git

Lihat juga: Github: menghasilkan kunci ssh , WikiHow

[Sunting # 1]

tanpa pemeriksaan sertifikat:

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

atau dikonfirmasi

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

Bagi saya masih belum jelas apa yang Anda minta, karena Anda tahu bahwa menginstal ca-sertifikat akan memperbaiki masalah.

[Sunting # 2]

Ok, pertanyaan lainnya adalah

bagaimana hanya memiliki sertifikat yang diperlukan untuk mengakses github.com melalui https

  1. Buka browser Anda dan navigasikan ke https://github.com/ . Klik nama hijau di sebelah kiri https://dan klik Certificates. Pada Detailstab, Anda akan melihat rantai sertifikat, yaitu:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Ekspor setiap sertifikat DigiCert ke file.

  3. salin file ke /etc/ssl/certs/
  4. jalankan untuk c_rehashsemua sertifikatca-certificates.crt
  5. kamu selesai.

Seperti yang saya katakan, saya bukan teman dari tindakan seperti itu karena github dapat mengubah CA kapan saja, jadi itu akan selalu menghasilkan pekerjaan tambahan.


sumber
1
Terima kasih atas sarannya. Tetapi saya ingin mengakses githubvia https.
Martin Vegter
1

Seperti yang disarankan sebelumnya, Anda bisa menggunakan kunci SSH, alih-alih mengandalkan HTTPS untuk menghindari masalah ini, dan bisa dibilang, menikmati keamanan yang lebih baik.

Karena itu, saya pikir apa yang Anda cari adalah bagaimana menginstal sertifikat root / CA di / etc / ssl / certs. Singkatnya, tidak cukup hanya dengan membuang file yang dikodekan PEM ke / etc / ssl / certs - Anda juga harus menghitung hash dari sertifikat tersebut, dan membuat symlink di / etc / ssl / certs ke sertifikat itu. mengajukan. Nama symlink, harus berupa hash yang diakhiri dengan .0, atau jika ada tabrakan hash, .1, dan seterusnya.

Berikut ini penulisan lengkap, serta contoh skrip yang dapat Anda gunakan untuk mengotomatiskan proses: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

Semoga ini yang Anda cari, tapi seperti yang saya katakan sebelumnya, kunci SSH mungkin solusi "lebih baik". :)

Rouben Tchakhmakhtchian
sumber
c_rehashmelakukan apa yang Anda jelaskan. Lihat c_rehashhalaman manual. BTW: tidak perlu menghitung hash. Mematarkan sertifikat ke ca-cert.crt cukup, karena githanya membaca file ini. Selanjutnya tautan menjelaskan cara mendapatkan sertifikat secara manual dengan openssl. Ini sangat diragukan dan memprovokasi seorang pria di tengah serangan. Saya tidak akan merekomendasikannya.