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

Итак, в школе нам нужно установить сертификат для доступа к сайтам 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. Но я хотел бы видеть ответ на все, а не просто взлом git

ТЛ;Д-Р

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

В ubuntu:

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

Почему?

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

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

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

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

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

Когда вы доверяете этому школьному центру сертификации, ваша проверка поддельного сертификата 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.crtsudo mv certificate.crt /usr/share/ca-certificate/cd /usr/share/ca-certificatesudo chmod 644 certificate.crtsudo dpkg-reconfigure ca-certificatessudo update-ca-certificates

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

sudo -iecho | 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 это те же имена хостов.

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

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

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


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

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

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

У меня была аналогичная проблема, когда установка сертификата в firefox и Google Chrome работала, но обновление в терминале sudo apt-get update не работал и выдавал 403 запрещенных IP-ошибки.У меня тоже был образец файла .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

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

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

возможный дубликат Как мне установить корневой сертификат?

@EricCarvalho нет, это для .crt. Мне нужно .cer

@A.B. Я хочу разрешить git использовать сертификат, который нам дает школа, вместо того, чтобы пытаться использовать сертификат github. Или, если это не сработает, позвольте сертификату школы пройти аутентификацию для меня

Обратите внимание, что расширения .crt и .cer взаимозаменяемы, просто измените расширение имени файла, они имеют одинаковую форму.

Здесь следует говорить не о (и отмеченных) “сертификатах”, а о сертификатах CA. Большая разница. Обычный сертификат хорош для одного конкретного экземпляра чего-либо. Однако, если вы установите чей-то сертификат CA, все без исключения, что CA будет выдавать в будущем, будет принято вашим компьютером. (Кроме того, другая цель - как объясняется в принятом ответе, это в основном атака MITM с вашим сотрудничеством.)

Таким образом, этот вопрос действительно является дубликатом, поскольку `.crt" и “.cer” ничего не значат.

У вас есть проблемы с вашей командой git или с тем, что вы хотите сделать? Дайте мне пинг с @A.B.

@Mike они почему бы не поставить это в качестве ответа?