додавання SSL-сертифіката лише для Github (не всі сертифікати з пакету ca-сертифікатів)


13

Я отримую таку помилку під час доступу до 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 програмно?
Nate W.

Ви спробували завантажити вихідний пакет, а потім дістати лише потрібний сертифікат?
jayhendren

Що ви використовуєте для доступу до github? якийсь інструмент командного рядка? браузер?
лк-

Відповіді:


13

Для доступу до вашого Github вам потрібно зробити це через ssh. Отже, вам потрібно додати відкритий ключ ssh до github. Після цього ви можете отримати доступ до github через ssh, тобто:

git init git@github.com:yourname/yourrepo.git

Дивіться також: Github: генерація ssh ключів , WikiHow

[Редагувати №1]

без перевірки сертифікатів:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

або автентифіковано

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

Для мене досі не зрозуміло, про що ви просите, адже ви знаєте, що встановлення ca-сертифікатів виправить проблему.

[Редагувати №2]

Гаразд, інше питання було

як мати лише той сертифікат, який потрібен для доступу до github.com через https

  1. Відкрийте веб-переглядач та перейдіть до https://github.com/ . Клацніть зелене ім’я зліва від https://і натисніть на Certificates. На Detailsвкладці ви побачите ланцюжок сертифікатів:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Експортуйте кожен сертифікат DigiCert у файл.

  3. скопіюйте файли в /etc/ssl/certs/
  4. запустити, до c_rehashякого кота всі сертифікатиca-certificates.crt
  5. ви закінчили.

Як я вже сказав, я не є прихильником таких дій, тому що github може змінити CA в будь-який час, тому це завжди призведе до додаткової роботи.


1
Дякую за пропозицію. Але я хотів би отримати доступ githubчерез https.
Мартін Вегтер

1

Як було запропоновано раніше, ви можете використовувати SSH ключі, а не покладатися на HTTPS, щоб уникнути цієї проблеми, і, певно, насолоджуйтесь кращою безпекою.

Сказавши це, я думаю, що ви шукаєте, як встановити root / CA сертифікати в / etc / ssl / certs. Коротше кажучи, недостатньо просто скинути кодований PEM файл у / etc / ssl / certs - ви також повинні обчислити хеш зазначеного сертифіката та створити символьне посилання в / etc / ssl / certs до цього cert файл. Ім’я символьної посилання має бути хеш-суфіксом .0, або якщо відбувається хеш-зіткнення, .1 тощо.

Ось детальне записування, а також зразок сценарію, який ви можете використовувати для автоматизації процесу: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificate

Сподіваюся, це те, що ви шукали, але, як я вже говорив раніше, SSH-ключі - це, мабуть, «краще» рішення. :)


c_rehashробить те, що ви пояснили. Див. c_rehashСторінку чоловіка. BTW: немає необхідності обчислювати хеші. Введення certs до ca-certifikat.crt є достатнім, оскільки gitчитає лише цей файл. Крім того, посилання пояснює, як вручну отримати сертифікати за допомогою openssl. Це дуже сумнівно і провокує чоловіка в середині нападу. Я б не рекомендував це.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.