Рубрики
Uncategorized

Использование клавиш GPG для подписания GIT коммиты — часть 3

Этот пост был первоначально опубликован на ср, 10 марта, 2021 года на CloudWithchris.com. Хорошо, часть 3! При … помечено Github, DevOps, Git, Безопасность.

Этот пост был первоначально опубликован на ср, 10 марта, 2021 года в cloudwithchris.com .

Хорошо, часть 3! На данный момент я предполагаю, что вы уже ознакомились с Часть 1 и Часть 2 серии. В качестве быстрого Recap, часть 1 сосредоточена на том, почему мы рассмотрим использование клавиш GPG в целом. Часть 2 сфокусирована на том, как генерировать клавиши GPG наряду с некоторыми рекомендуемыми практиками на расщеплении нашего ключа Master (сертификацию), от наших специальных ключевых ключей. Этот пост (часть 3) посвящен использованию этих клавиш как часть нашего обычного рабочего процесса развития, используя Git. Мы предполагаем, что Github — наша концевая цель, как поддерживает GitHub Сделайте проверку подписи, используя клавиши GPG Отказ

К концу этого поста мы должны иметь возможность использовать клавиши GPG, чтобы подписать наши коммиты с ключом GPG с нашей машины. Мы еще не введем Yubikeys в уравнение, и мы оставим это для части 4 поста. В части 2 мы создали основной ключ GPG для сертификации и подраздел для подписания. Мы будем сосредоточены на подписавшей подразделе для большинства этой конкретной статьи. В качестве напоминания ваш брелок должен иметь только секретный импортированный подраздел, и не содержит частного главного ключа (помнить принцип наименее привилегии/разделения опасений!).

Давайте перейдем к репозитории, который мы использовали. В папке вашего локального хранилища GIT используйте окно командной строки, чтобы ввести следующее:

git config --local user.email "alice@contoso.com"
git config --local user.name "Alice"
git config --local user.signingkey "0F8B8DE7FDFE3872"
git config --local commit.gpgsign true

Несколько наблюдений на вышеуказанном —

  • Мы вновь сбрасываем пользовательские настройки для этого хранилища в подробности Alice. Эти детали должны быть выровнены с деталями, которые вы использовали в клавише GPG для подписания, чтобы правильно работать (то есть детали, с которыми вы совершаете, и детали, с которыми вы подписываете коммит).
  • Обратите внимание на значение user.signingkey, которое я предоставил? Это идентификатор подраздела, используемый для подписания, а не главной клавиши для сертификации.
  • Обратите внимание, что Chady.gpgsign установлен на правду? Это означает, что каждый фиксатор в этом репозитории должен автоматически вынужден подписать, вместо того, чтобы предоставить флаг во время каждой команды GIT Commit. Это необязательный выбор, который я сделал. Если вы хотите, чтобы это было необязательным, то вы можете использовать -S или --gpg-знак = beyid свойства по мере необходимости. Я бы предпочел, чтобы все мои комбиниты были подписаны, поэтому корректируя его на уровне конфигурации Git.
  • Также обратите внимание, что мы использовали флаглокальный флаг в каждой строке. Хотя это не нужно (поскольку поведение поведения поведения Git Config — это внести эти изменения в локальном репозитории, а не на глобальном уровне, используя --global ), я чувствую, что он обеспечивает ясность в этом примере, а также обеспечивает некоторую предсказуемость для Пример В случае, если поведение по умолчанию когда-либо меняется в будущем!

Откройте myfile.php и отрегулируйте его к следующему:


Добавьте файл в зону постановки Git, а затем зафиксируйте файл в локальный репозиторий Git.

git add myfile.php
git commit -m "Made additional statement change"

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

Как только вы правильно ввели парольную фразу, изменения будут совершены! Но как мы знаем, что коммит был подписан? Это не было похоже на что-то другое в процессе фиксации. Давайте использовать небольшое изменение команды, которую мы уже видели. Мы собираемся использовать Git log Еще раз, но на этот раз также добавляют - Speignature флаг. Возможно, вы можете догадаться, что это будет делать! Идти вперед и беги Git Log - Show-Signature Отказ Вы должны увидеть вывод, аналогичный ниже.

Для вас читатели Eagle Eyed, вы, возможно, заметили, мои фиксирующие хэши и даты внезапно изменились в моей истории! Один из моих жестких дисков поврежден с тех пор, как я написал предыдущий пост блога, поэтому мне пришлось создать свой пример с нуля, так как я не поддержал эту конкретную папку. Не волнуйтесь, нет дыма или зеркал здесь!

git log --show-signature
commit fb3c22902f70026d8a446ec41e413f409c418734 (HEAD -> master)
gpg: Signature made 08/03/2021 20:38:26 GMT Standard Time^M
gpg:                using RSA key 2E873F7C5570C7F90475B8510F8B8DE7FDFE3872^M
gpg: Good signature from "Alice " [unknown]^M
gpg:                 aka "Alice " [unknown]^M
gpg: WARNING: This key is not certified with a trusted signature!^M
gpg:          There is no indication that the signature belongs to the owner.^M
Primary key fingerprint: 6E7E CB40 9742 8669 10B1  0197 A0B8 2563 C344 D4AA^M
     Subkey fingerprint: 2E87 3F7C 5570 C7F9 0475  B851 0F8B 8DE7 FDFE 3872^M
Author: Alice 
Date:   Mon Mar 8 20:38:26 2021 +0000

    Made additional statement change

commit 440cefa89824cd814210c3b370debeecc3bc6b56
Author: Alice 
Date:   Mon Mar 8 20:29:10 2021 +0000

    Adjust to Hello Contoso

commit 86f6a32f4c7a37106ceb4ce22116d134c2bf20bf
Author: Alice 
Date:   Mon Mar 8 20:28:40 2021 +0000

    My Hello World Sample

Что говорит нам, говорит нам? Он говорит нам, что последний используемый коммит был действительно подписан с ключом GPG. Здорово! Так что это означает, что мы закончили правильно, и мы можем закончить этот блог серии? Не совсем. Просмотрите предупреждение — «Ключ не сертифицирован с доверенной подписью! Нет никаких признаков того, что подпись принадлежит владельцу. «Здесь вступает в игру функции проверки ключа GitHub GPG.

Теперь, для остальной части этого блогов, я собираюсь перестать говорить с точки зрения Алисы и продемонстрировать остальные как сам (в первую очередь, потому что у меня нет доступа к Alice@contoso.com или иметь этот адрес электронной почты, связанный с моим Учетная запись GitHub, поэтому любые примеры, демонстрирующие это на GitHub, не помечены как проверены).

Для работы следующих шагов вам необходимо убедиться, что один из адресов электронной почты, используемой в клавише GPG, также связан с вашей учетной записью GitHUB. Вы можете проверить это и сделать необходимые настройки на свой Настройки GitHub> Письма Отказ В качестве напоминания есть опция на странице настройки электронной почты, которая написана Держите мой адрес электронной почты Private Отказ Это позволяет вам использовать электронную почту без ответа из GitHub, чтобы скрыть свой персональный адрес электронной почты и избежать любых проблем конфиденциальности (помните, что при использовании журнала Git Git Мы можем увидеть имя пользователя и адрес электронной почты компьютера). Если вы хотите использовать этот адрес электронной почты без ответа для ключа подписания GPG, вам необходимо убедиться, что вы обновили пользователь Git Config .email, чтобы использовать адрес электронной почты без ответа, а также включен его как В качестве адреса электронной почты в вашем ключ (например, Alice's Digits GithUbusername@users.noreply.github.com ).

Теперь навидись к Настройки GitHub> SSH и GPG ключей Отказ Вы заметите, что есть возможность добавить новый ключ GPG. Если вы уже добавили какие-либо существующие клавиши GPG, то он будет список для вас (как вы увидите на скриншоте ниже).

При добавлении информации о клавишей GPG в GitHub убедитесь, что вы добавляете компонент открытого ключа, а не закрытый ключ! Вам нужно только поделиться открытым ключом с GitHub. Это тот же случай, когда вы используете свою ключевую информацию на общедоступный сервер поиска для других, чтобы проверить вас в сценариях подписания/шифрования.

После того, как вы добавили открытые клавиши GPG в GitHub, теперь вы можете продолжать и нажать локальные изменения в GitHub, используя Git push. (Если вы еще не связали удаленное местоположение с помощью репозитория GIT, вам также может потребоваться использовать команду WORMED WAGIT WHIT Add , а затем использовать Git push ). Предполагая, что открытый ключ в GPG Раздел Keys вашего аккаунта GitHub соответствует закрытому ключу, используемую для подписания коммитов, то вы заметите, что коммиты будут помечены как проверены в пользовательском интерфейсе GitHub. Смотрите пример ниже из CloudWithchris.com Git Repository комбинирует страницу Отказ

На данный момент мы теперь настроили локальный репозиторий GIT для использования ключа подписания GIT, когда выступаете новый коммит для нашего хранилища Git. После того, как эти изменения нажаты в Github, из-за связи между общедоступным ключом GPG в нашем счете GitHub и коммитациями, подписанными с закрытым ключом, коммиты могут быть помечены как проверены в пользовательском интерфейсе GitHub. Это дает нам некоторую уверенность в том, что они являются подлинными.

Мы можем пойти на один шаг дальше, что мы исследуем в следующем посте. В настоящее время закрытый ключ для подписания наших коммитов хранится на самой машине. Что произойдет, если вредоносный актер может получить доступ к нашей машине? До тех пор, пока мы не определим вторжение, они могут быть в состоянии подсчитать нашу личность, если они знают пароль, связанную с закрытым ключом.

Существует общая и растущая практика в области технологий для использования многофакторных методов аутентификации для защиты наших счетов. Этот второй фактор обычно является то, что у вас есть, например, yubikey (или код в приложении аутентификации), чтобы убедиться, что это на самом деле. Для нашего сценария подписания ключа Git и GPG мы будем использовать Yubikey Neo. Конечно, всегда есть аргумент, что кто-то может украсть у вас юбина, но теория состоит в том, что второй фактор — это что-то дополнительное, что у вас есть, а не хранить на самой машине, что делает его сложнее для компромисса (не невозможно конечно).

Итак, вот это для этого блога. Оставайтесь настроиться до следующей недели, где мы охватываем часть 4 — и, скорее всего, последняя часть — в этом блоге Post Series на использование клавиш GPG, чтобы подписать ваш GIT Chays. До следующего раза пока на данный момент.

Оригинал: «https://dev.to/cloudwithchris/using-gpg-keys-to-sign-git-commits-part-3-53le»