Рубрики
Uncategorized

Использование клавиш GPG для подписи GIT Commits — Часть 4

Этот пост был первоначально опубликован в среду, 17 марта 2021 года на CloudWitchris.com. Часть 4 — Финал … Tagged with Github, DevOps, Git, Security.

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

Часть 4 — Последняя часть (по крайней мере, пока, пока я не найду где -то еще, что мы можем расширить с этим)! Эта часть будет сосредоточена на переносе ключей, которые мы недавно сгенерировали на наше устройство Yubikey. У меня есть Yubikey Neo, так что я буду использовать это.

Примечание. Имейте в виду, что Yubikey Neo имеет ограничение, где он может удерживать ключи только до 2048 бит. Если вы сгенерировали ключ дольше, чем этот, то движение потерпит неудачу. Возможно, вам придется пройти через предыдущие посты в блоге, чтобы повторно генерировать ключи. Хотя я упомянул это ограничение в часть 2 .

Сам Юбикеи считается устройством «смарт -карты». Когда вы подключите Yubikey, вы должны увидеть, что он обнаруживается как Yubikey Neo с комбинацией дополнительной информации, например, Yubikey Neo OTP+UTF+CCID. Я верю, что когда я первоначально установил свой, мне нужно было скачать Yubikey Manager и переключить режимы, так как это не отображалось правильно. Дайте мне знать, как вы поступаете!

C:\Users\chris>gpg --card-status
Reader ...........: Yubico Yubikey NEO OTP U2F CCID 0
Application ID ...: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Application type .: OpenPGP
Version ..........: 2.0
Manufacturer .....: Yubico
Serial number ....: XXXXXXXX
Name of cardholder: Chris Reddington
Language prefs ...: en
Salutation .......:
URL of public key : [not set]
Login data .......: reddobowen
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 149
Signature key ....: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX
      created ....: 2021-02-10 17:21:57
Encryption key....: [none]
Authentication key: [none]
General key info..: sub  rsa2048/SUBKEYXXXXXXXXXX 2021-02-10 Chris Reddington 
sec#  rsa2048/MAINKEYXXXXXXXXX  created: 2021-02-10  expires: never
ssb>  rsa2048/SUBKEYXXXXXXXXXX  created: 2021-02-10  expires: 2022-02-10
                                card-no: XXXX XXXXXXXX

Примечание: Хороший Pro-Tip от Скотта Хансельмана на данном этапе. Если у вас есть доступ к нескольким смарт-картам (включая Windows Hello), вам может потребоваться включить порт-порт в файл scdaemon.conf по адресу appdata %\ gnupg \ scdaemon.conf. Это шаг, который я должен был завершить, так что спасибо Скотту за это!

Чтобы переместить ключ GPG в Yubikey, нам нужно снова использовать командную линию GPG. Если у вас есть несколько ключей на машине, вам может потребоваться использовать команду Toggle в GPG, чтобы выбрать ключ, который вы хотите перемещать. Если вы следили за шагами из этих сообщений в блоге по порядку (поэтому вы сняли ключ сертификации с машины и повторно импортировали подписание подписания), вам не нужно использовать этот шаг. Однако, если у вас есть несколько ключей на вашей машине, взгляните на блог Скотта выше, так как он показывает этот подход.

Убедитесь, что вы подкрепили свои ключи перед завершением следующего шага (перемещая ключ к карте). Keytocard — это разрушительное действие (как также обсуждалось на этой проблеме GitHub ).

gpg --edit-key YourSubkeyHere
gpg (GnuPG) 2.2.27; Copyright (C) 2021 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret subkeys are available.

pub  rsa2048/XXXXXXXXXXXXXXXX
     created: 2021-02-10  expires: never       usage: C
     trust: ultimate      validity: ultimate
ssb  rsa2048/XXXXXXXXXXXXXXXX
     created: 2021-02-10  expires: 2022-02-10  usage: S
     card-no: XXXX XXXXXXXX
[ultimate] (1). Chris Reddington 
[ultimate] (2)  Chris Reddington 

gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
   (1) Signature key
Your selection? 1

gpg> save

Крис, если это разрушительное действие — что произойдет, если вам нужно скопировать ключ на другое устройство Yubikey (или нужно им импортировать его на машине)? Вы можете полностью удалить заглушки секретного ключа с машины, а затем повторно импортировать секретные ключи, как показано на предыдущем шаге. Помните, что мы обсуждали, хотя и вокруг принципала наименьшей привилегии и разделения проблем.

Вы также захотите убедиться, что у вашей Yubikey есть соответствующие контакты. Как описано в Yubikey Docs PIN -код по умолчанию составляет 12345678, а контакт администратора по умолчанию — 12345678. Как вы можете себе представить, это не так сложнее, чтобы угадать — поэтому убедитесь, что вы нашли время, чтобы изменить их, и помните их!

Вы можете изменить булавки, выполнив ниже —

gpg --card-edit
gpg/card> admin
Admin commands are allowed

gpg/card> passwd
gpg: OpenPGP card no. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX detected

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Your selection? 1
PIN changed.

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Your selection? 3
PIN changed.

Теперь, продолжайте и постарайтесь сделать подписанный коммит в вашем местном репозитории GIT. Я предполагаю, что у вас все еще есть Конфигурация GIT на месте из части 3 которые заставляют все коммиты подписаны подписанным ключом GPG (как вы указали идентификатор ключа). Прежде чем сделать коммит, удалите Yubikey с вашей машины. Теперь внесите изменения, поставьте его и посвятите его местному хранилищу. Вы должны увидеть немного иную подсказку. Я вижу что -то похожее на ниже —

После того, как вы вставили Yubikey, вы должны увидеть подсказку, чтобы разблокировать SmartCard. Ваши подсказки могут выглядеть немного по -другому, в зависимости от того, какой инструмент/исполняемый файл настроен в вашей системе для обработки записи PIN.

Успех! Теперь вы использовали ключ подписания GPG, который вы сгенерировано в части 2 , перенес его на устройство Yubikey и в результате сгенерировал подписанный коммит. На этом этапе вы можете создать отдельные ключи подписания для разных машин/разных Yubikeys, чтобы компромисс не влиял на несколько устройств. Но я оставлю это на ваше усмотрение, дорогой читатель.

Я надеюсь, что эта серия была полезна. Пожалуйста, дайте мне знать, как вы поступаете, и если могут быть дополнительные области, которые полезны … Кто знает, может быть, часть 5?

Итак, до следующего поста в блоге, пока пока!

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