Я получаю следующую ошибку при доступе к Github через HTTPS:
error: server certificate verification failed.
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Это потому, что у меня нет сертификатов /etc/ssl/certs/
. Я знаю, как решить эту проблему. Я могу установить пакет ca-certificates
из репозитория Debian. Проблема, однако, в том, что при этом будут установлены все сертификаты (тысячи), которые я не обязательно хочу принимать / доверять.
Как я могу установить сертификат только для Github?
Подзадача / Подзапрос
На другом компьютере, где пакет ca-certificates
уже установлен и git работает, я заметил, что некоторые сертификаты /etc/ssl/certs/
находятся в одном сертификате на файл, а другие - много сертификатов в одном файле. Конкретный файл, содержащий сертификат Github, /etc/ssl/certs/ca-certificates.crt
содержит более 150 других сертификатов:
$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159
Как я могу найти, какой из этих 159 сертификатов мне нужен? (кроме грубой силы - разрезание файла пополам и проверка обеих половин, повторение while n > 1
).
источник
Ответы:
Чтобы получить доступ к вашему Github, вам нужно сделать это через ssh. Поэтому вам нужно добавить ваш открытый ключ ssh в github. После этого вы можете получить доступ к github через ssh, т.е.
Смотрите также: Github: генерация ключей ssh , WikiHow
[Правка № 1]
без проверок сертификатов:
или заверенный
Для меня все еще не ясно, о чем вы просите, потому что вы знаете, что установка CA-сертификатов решит проблему.
[Правка № 2]
Хорошо, другой вопрос
Откройте браузер и перейдите на https://github.com/ . Нажмите на зеленое имя слева от
https://
и нажмите наCertificates
. НаDetails
вкладке вы увидите цепочку сертификатов, которая:Экспортируйте каждый из сертификатов DigiCert в файл.
/etc/ssl/certs/
c_rehash
какой кот все сертификатыca-certificates.crt
Как я уже сказал, я не являюсь другом таких действий, потому что github может изменить CA в любое время, поэтому это всегда приведет к дополнительной работе.
источник
github
черезhttps
.Как было предложено ранее, вы можете использовать ключи SSH, вместо того чтобы полагаться на HTTPS, чтобы избежать этой проблемы и, возможно, повысить безопасность.
Сказав это, я думаю, что вы ищете, как установить сертификаты root / CA в / etc / ssl / certs. В двух словах, недостаточно просто выгружать файл в кодировке PEM в / etc / ssl / certs - вы также должны вычислить хэш указанного сертификата и создать символическую ссылку в / etc / ssl / certs для этого сертификата. файл. Имя символической ссылки должно содержать хеш с суффиксом .0 или, если есть коллизия хешей, .1 и т. Д.
Вот подробное описание, а также пример сценария, который вы можете использовать для автоматизации процесса: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates
Надеюсь, это то, что вы искали, но, как я уже говорил ранее, ключи SSH, вероятно, являются «лучшим» решением. :)
источник
c_rehash
делает то, что вы объяснили. Смотритеc_rehash
справочную страницу. Кстати: нет необходимости вычислять хэши. Достаточно добавить сертификаты в ca-сертификаты.crt, так какgit
читает только этот файл. Кроме того, ссылка объясняет, как вручную получить сертификаты с помощью openssl. Это очень сомнительно и провоцирует человека в середине атаки. Я бы не рекомендовал это.