Как установить сертификаты для командной строки

Поэтому в школе нам нужно установить сертификат для доступа к сайтам https. В Firefox я могу импортировать сертификат. Однако я не могу сделать это с командной строкой. Например, бег git push Я получил:

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

Как мне импортировать сертификат, чтобы удалить это? Импорт должен быть в состоянии подтвердить подлинность для меня. Кроме того, это .cer файл, так что ответ для .crt не будет работать. Кроме того, я не хочу, чтобы шаги по настройке git, как у меня уже есть. Я хочу знать, возможно ли это сделать. Или я могу просто отключить аутентификацию с помощью git командовать полностью и заставить его игнорировать сертификаты вроде того, что здесь говорится в ответе? Кроме того, я не хочу, чтобы веб-страница загружалась, я установил для этого firefox. Я хочу git push Команда для выдачи стандартного вывода, например:

[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

Примечание: я узнал его git config --global http.sslverify false, Но я хотел бы увидеть ответ на все вопросы, а не просто мерзавец

7 ответов

Решение

TL;DR

Чтобы все работало, а не только ваш браузер, вам нужно добавить этот сертификат CA в доверенный репозиторий системы.

В убунту:

  • Перейдите в /usr/local/share/ca-сертификаты /
  • Создайте новую папку, т.е. "школа sudo mkdir"
  • Скопируйте файл.crt в школьную папку
  • Убедитесь, что разрешения в порядке (755 для папки, 644 для файла)
  • Запустите "sudo update-ca-сертификаты"

Зачем

Позвольте мне также объяснить, что происходит, поэтому другие авторы понимают, почему им не нужен сертификат для использования Github поверх HTTPS.

Что происходит, так это то, что ваша школа перехватывает все соединения SSL, возможно, для их мониторинга.

Для этого то, что они делают, по сути, является атакой "человек посередине", и из-за этого ваш браузер справедливо жалуется, что он не может проверить сертификат github. Ваш школьный прокси получает сертификат github и вместо этого предоставляет свой собственный сертификат.

Когда ваш браузер пытается проверить предоставленный школой сертификат против CA, который подписал сертификат github, он по праву завершается неудачей.

Итак, чтобы SSL-соединение работало в школе, вам нужно сознательно принять эту атаку "MITM". И вы делаете это, добавляя сертификат CA школы в качестве доверенного.

Если вы доверяете этому школьному CA, ваша проверка сертификата поддельного github будет работать, поскольку сертификат поддельного github будет подтвержден школьным центром сертификации.

Помните, что SSL-соединение больше не является безопасным, поскольку администратор вашей школы сможет перехватить все ваши зашифрованные соединения.

ca-certificates пакет имеет инструкции в своем README.Debian:

Если вы хотите установить локальные центры сертификации для неявного доверия, поместите файлы сертификатов как отдельные файлы, заканчивающиеся на .crt в /usr/local/share/ca-certificates/ и перезапустить update-ca-certificates,

Обратите внимание, что здесь упоминается каталог, отличный от других ответов здесь:

/usr/local/share/ca-certificates/

После копирования в /usr/local/share/ca-certificates/ Затем вы можете обновить разрешения сертификата и запустить sudo update-ca-certificates как уже упоминалось в ответе телеграфистов. В выводе вы увидите, что сертификат был добавлен.

Расширения.crt, .pem и.cer являются взаимозаменяемыми, просто измените расширение имени файла, они имеют одинаковую форму. Попробуй это:

$ 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

Я прочитал все решения и решил, как это;

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

Я использую следующую подборку предыдущих ответов:

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

Это может быть изменено, чтобы быть однострочным.

Часто оба site.example.com а также example.com одинаковые имена хостов.

У меня была похожая проблема, когда установка сертификата в Firefox и Google Chrome работала, но обновление в терминале sudo apt-get update не работал и выдавал 403 Запрещенные ошибки IP. У меня тоже был файл sample.cer. Поэтому в основном я должен сначала преобразовать его в.crt.

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

Еще пока делаю sudo dpkg-reconfigure ca-certificates Я не смог найти требуемый сертификат. Проблема со мной в том, что я копировал сертификат не в том месте.

Вместо того, чтобы копировать это в $/usr/share/ca-certificates Я копировал это в $/usr/local/share/ca-certificatesНо, разместив его в нужном месте, решил мою проблему. Но я все еще не могу обновить пакеты или установить новые пакеты.

Быстрое исправление (для меня):

Использование ftp вместо http

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

и выше команда сработала. Пожалуйста, сделайте копию файла sources.list перед внесением изменений.

Если что-то не понятно или не правильно, поправьте меня.

Для доступа к веб-сайту с httpsНезависимо от того, используете ли вы CLI или GUI-браузер, вам не нужен ваш сертификат shool.

Использовать git через http(s) вам необходимо зарегистрировать свой открытый ключ в настройках своего профиля на GitHub.

Больше информации здесь. Измените свой профиль GitHub здесь.


Попробуй это:

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

… Работает без дополнительного сертификата.

Другие вопросы по тегам