Komut satırı için sertifika nasıl yüklenir


72

Bu yüzden okulda https sitelerine erişmek için bir sertifika yüklememiz gerekiyor. Firefox'ta sertifikayı alabilirim. Ancak, komut satırı ile bunu yapamam. Örneğin, çalışan git pushalıyorum:

fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Bunu kaldırmak için bir sertifikayı nasıl alırım? İçe aktarma benim için doğrulayabilmelidir. Ayrıca, bir .cerdosya, bu yüzden cevap .crtişe yaramayacak. Ayrıca, git ayarlarının nasıl yapıldığına dair adımlar istemiyorum. Bunu yapmanın mümkün olup olmadığını bilmek istiyorum. Ya da sadece gitkomut ile kimlik doğrulamasını tamamen devre dışı bırakabilir ve burada cevabın yazdığı gibi sertifikaları yoksaymasını sağlayabilir miyim? Ayrıca, web sayfasının yüklenmesini istemiyorum, bunu yapmak için firefox kullandım. İstediğim git pushkomut gibi standart çıkış vermek:

[master 630d087] message
 1 file changed, 93 insertions(+), 80 deletions(-)
 rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
   851ae39..630d087  master -> master

Not: Ben öğrendim git config --global http.sslverify false. Ama ben sadece bir hack değil, her şeyin cevabını görmek istiyorum.



@EricCarvalho hayır, bunun için .crt. İhtiyacım var.cer
Universal Electricity

Git komutunuzla veya ne yapmak istediğinizle ilgili bir sorununuz mu var? Bana @AB
AB

@ AB git github sertifikasını kullanmaya çalışmak yerine, okulun bize verdiği sertifikayı kullanmasına izin vermek istiyorum. Veya bu işe yaramazsa, o zaman okulun benim için kimlik doğrulamasını yapmasına izin ver
Universal Electricity

.Crt ve .cer uzantılarının birbiriyle değiştirilebilir olduğunu unutmayın, sadece dosya adı uzantısını değiştirin, aynı forma sahip olduklarını unutmayın.
Mike,

Yanıtlar:


117

TL; DR

Yalnızca tarayıcınızla değil, her şeyin çalışması için, o CA sertifikasını sistemin güvenilir CA deposuna eklemeniz gerekir.

Ubuntu'da:

  • / Usr / local / share / ca -ertificates / adresine gidin
  • Yeni bir klasör oluşturun, yani "sudo mkdir school"
  • .Crt dosyasını okul klasörüne kopyalayın
  • İzinlerin TAMAM olduğundan emin olun (klasör için 755, dosya için 644)
  • "Sudo update-ca -ertificates" ı çalıştırın

Neden

Neler olduğunu da açıklamama izin verin, diğer posterler neden HTTPS üzerinden Github kullanmak için herhangi bir sertifikaya ihtiyaç duymadıklarını görüyorlar.

Orada olan şey şu ki, okulunuz muhtemelen onları izlemek için tüm SSL iletişimini durduruyor.

Bunu yapmak için, yaptıkları şey aslında "ortadaki bir adam" saldırısıdır ve bu nedenle tarayıcınız github'un sertifikasını doğrulayamadığından şikayetçidir. Okul vekiliniz github'ın sertifikasını alıyor ve onun yerine kendi sertifikasını veriyor.

Tarayıcınız, okulun sağladığı sertifikayı github'ın sertifikasını imzalayan CA'ya karşı doğrulamaya çalıştığında, doğru bir şekilde başarısız olur.

Bu nedenle, SSL bağlantısının okulda çalışması için, bu "MITM" saldırısını bilinçli olarak kabul etmeniz gerekir. Ve bunu okulun CA sertifikasını güvenilir bir sertifika olarak ekleyerek yaparsınız.

O okulun CA'sına güvendiğiniz zaman, sahte github sertifikasını doğrulamanız gerekir, çünkü sahte github sertifikası okul CA'sı tarafından doğrulanacaktır.

Okul yöneticiniz şifreli bağlantılarınızı engelleyebileceğinden, artık SSL bağlantısının güvenli olmadığını unutmayın.


Bu aslında Mike'ın, gerekmemesi gereken dpkg-yeniden yapılandırması olmadan verdiği cevapla aynı. Devam eden, git veya başka bir komut satırının SSL doğrulamalarında% 100 standart olmamasıdır. Okulunuzun ilk uyguladığı "SSL saldırılarını" çözmek için "Git Hack" olarak adlandırmanız gerekebilir.
Telgraf

Ayrıca, bu komutları çalıştırmak için kök izinlerine ihtiyacınız olduğunu unutmayın; bu yüzden sudo komutunun başarılı olması gerekiyor, yoksa sistemin Sertifika Yetkililerini güncelleyemezsiniz.
Telgraf

2
Lütfen ek bilgileri sağlamak için cevabınızı düzenleyin - yorumda bırakmayın.
guntbert

1
Olması gerektiğine inanıyorum /usr/local/share/ca-certificates/. Bakın man update-ca-certificates, hangisinin bir beyaz liste olduğu, /usr/share/ca-certificates/ancak /usr/local/share/ca-certificates/dizindeki her şeye nasıl güvendiğiyle ilgili olanlardan bahsediyor .
Ian Hickson,

3
Ubuntu'da 16.04'te CA'yı ekledikten sonra CA'yı almak /usr/local/share/ca-certificatesiçin kullanmak zorunda kaldım sudo dpkg-reconfigure ca-certificates.
Matt L.

41

ca-certificatesPaket onun talimatları vardır README.Debian:

Eğer yerel sertifika otoriteleri dolaylı güvenilebilir yüklemek istiyorsanız, ile biten tek dosyalar olarak sertifika dosyalarını koyun lütfen .crtINTO /usr/local/share/ca-certificates/ve tekrarında update-ca-certificates.

Buradaki diğer cevaplardan farklı bir dizin bulunduğunu unutmayın:

/usr/local/share/ca-certificates/

/usr/local/share/ca-certificates/Size kopyaladıktan sonra, sertifikanın izinlerini güncelleyebilir ve sudo update-ca-certificatesTelegraphers'ın cevabında belirtilen şekilde çalıştırabilirsiniz . Çıktıda, sertifikanın eklendiğini göreceksiniz.


4
Bu benim için Ubuntu 16.04'te de çalıştı. Kabul edilen cevaptaki yol benim için işe yaramadı.
Plazgoth

Bu kabul edilmiş bir cevap olmalıdır, bu ubuntu sunucusu 16.04 LTS için çalışan bir çözümdür.
Lasitha Benaragama

15

.Crt, .pem ve .cer uzantıları birbiriyle değiştirilebilir, sadece dosya adı uzantısını değiştirir, aynı forma sahiptirler. Bunu dene:

$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem

Bu doğru olmasına rağmen, yardımcı olmadı. Ancak gelecekte insanlara yardım edebilir
Universal Electricity

Bir satır daha ekledim, git belinin sertifikanıza güvenmesini sağlayın, cer dediğimi unutmayın. .pem yerine 4 adımdan ikisinde .crt. @Unicorns Çok Çok Yummy
Mike

3
.CER dosyanız ikili (DER formatı) ise, sadece uzantıyı değiştiremezsiniz. openssl(1)Sertifikayı PEM biçimine dönüştürmek için kullanın . Çalıştır:$ openssl -in mycert.cer -inform DER -out mycert.pem -outform PEM
Arch user

1
@Archuser Belki de doğru komut şudur:openssl x509 -inform DER -in certificate.cer -out certificate.pem
artificerpi 3

5

Aşağıdaki önceki cevapların derlemesini kullanıyorum:

sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt 
update-ca-certificates

Tek astar olacak şekilde değiştirilebilir.

Genellikle her ikisi de site.example.comve example.comaynı ana bilgisayar adlarıdır.


3

Tüm çözümleri okudum ve böyle çözdüm;

sudo openssl x509 -inform DER -in certificate.cer -out certificate.crt

sudo mv certificate.crt /usr/share/ca-certificate/

cd /usr/share/ca-certificate

sudo chmod 644 certificate.crt

sudo dpkg-reconfigure ca-certificates

sudo update-ca-certificates

1

Sertifikayı firefox ve google chrome'a ​​yüklemek de benzer bir sorunla karşı karşıya kalıyordu ancak terminalde güncelleme sudo apt-get updateçalışmadı ve 403 Yasaklı IP hatası verdi. Ben de sample.cer dosyam vardı. Yani temelde ilk önce .crt biçimine dönüştürmeliyim.

sudo openssl x509 -inform DER -in sample.cer -out sample.crt

Yine sudo dpkg-reconfigure ca-certificatesde gerekli sertifikayı bulamadım. Benimle ilgili sorun, sertifikayı yanlış yere kopyalamamdır.

Kopyalamak yerine kopyalamak $/usr/share/ca-certificates istedim. $/usr/local/share/ca-certificates Ama doğru yere yerleştirmek sorunumu çözdü. Ancak hala paketleri güncelleyemiyorum veya yeni paket yükleyemiyorum.

Hızlı düzeltme (benim için):

Http yerine ftp kullanımı

sudo sed -i s/http/ftp/ /etc/apt/sources.list && apt-get update

ve yukarıdaki komut çalıştı. Lütfen değişiklikleri yapmadan önce sources.list dosyasının bir kopyasını alın.

Herhangi bir şey net değilse veya uygun değilse, lütfen beni düzeltin.


0

httpsBir CLI veya GUI tarayıcısı kullanıyor olsanız da, bir web sitesine erişmek için shool sertifikanıza ihtiyacınız yoktur.

gitHttp (ler) ile kullanmak için genel anahtarınızı GitHub'taki profil ayarlarınıza kaydetmeniz gerekir .

Burada daha fazla bilgi var . GitHub profilinizi buradan değiştirin .


Bunu dene:

sudo apt-get install w3m
w3m https://github.com/

… Ek bir sertifika olmadan çalışır.

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.