Как установить сертификаты для командной строки
Поэтому в школе нам нужно установить сертификат для доступа к сайтам 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/
… Работает без дополнительного сертификата.