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-certificates
dari 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-certificates
sudah 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.crt
berisi 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
).
sumber
Jawaban:
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:
Lihat juga: Github: menghasilkan kunci ssh , WikiHow
[Sunting # 1]
tanpa pemeriksaan sertifikat:
atau dikonfirmasi
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
Buka browser Anda dan navigasikan ke https://github.com/ . Klik nama hijau di sebelah kiri
https://
dan klikCertificates
. PadaDetails
tab, Anda akan melihat rantai sertifikat, yaitu:Ekspor setiap sertifikat DigiCert ke file.
/etc/ssl/certs/
c_rehash
semua sertifikatca-certificates.crt
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
github
viahttps
.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". :)
sumber
c_rehash
melakukan apa yang Anda jelaskan. Lihatc_rehash
halaman manual. BTW: tidak perlu menghitung hash. Mematarkan sertifikat ke ca-cert.crt cukup, karenagit
hanya 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.