Podpisywanie commitów git może uratować życie, gdy musisz udowodnić, że jesteś (lub nie) autorem commitów lub że commit został zmieniony przez inną osobę. Istnieje kilka prostych, ale nie tak oczywistych kroków potrzebnych do tego, aby to zadziałało.
Wygeneruj parę kluczy publiczny/prywatny
Uruchom gpg:
gpg --full-gen-key # gpg 2.x
lub
gpg --gen-key # gpg 1.x
- Wybierz
RSA and RSA
- Ustaw rozmiar klucza na
4096
- Ustaw okres ważności klucza (cokolwiek ci odpowiada)
- Wprowadź swoje dane (imię i nazwisko oraz adres e-mail). Powinny one być zgodne z tożsamością committera, w przeciwnym razie będziesz musiał ręcznie poinformować git, którego klucza użyć.
Eksport klucza publicznego
- Uzyskaj swój klucz publiczny, uruchamiając:
gpg --list-secret-keys --keyid-format LONG
Znajdź swój klucz i skopiuj identyfikator, jest on poprzedzony przez
sec 4096R/
:sec 4096R/123456789ABCDEF0
Następnie uruchom polecenie eksportu:
gpg --armor --export 123456789ABCDEF0
i skopiować dane wyjściowe z kluczem publicznym (wraz z
-----BEGIN PGP PUBLIC KEY BLOCK-----
oraz-----END PGP PUBLIC KEY BLOCK-----
).
Dodaj klucz publiczny do repozytorium git
Github
Przejdź do ustawień swojego profilu, aby Klucze SSH i GPG i kliknij New GPG key
gdzie można wkleić i zapisać klucz.
Gitlab
Przejdź do ustawień użytkownika, do Klucze GPG, wklej swój klucz i naciśnij Add key
Konfiguracja lokalnego repozytorium i narzędzi
Repozytoria Git są teraz świadome twoich kluczy, ale musimy poinstruować git, aby używał twojego klucza
Wymuszenie użycia klucza publicznego do podpisania
W przypadku niezgodności między adresem e-mail użytkownika git a adresem e-mail używanym do kluczy gpg, można wyraźnie określić klucz używany do podpisywania:
git config --global user.signingkey 123456789ABCDEF0
Konfiguracja IDE
W przypadku uruchamiania za pomocą IDE, takiego jak IntelliJ, należy skonfigurować gpg, aby nie korzystał z terminala, ale raczej z własnego GUI. Wystarczy dodać następującą linię do ~/.gnupg/gpg.conf
plik:
no-tty
Z drugiej strony, będzie to prowadzić do problemów z zatwierdzaniem przy użyciu sesji ssh, więc należy pamiętać, że trzeba włączyć / wyłączyć tę opcję w zależności od tego, czy pracujesz zdalnie, czy nie.
Podpisz zobowiązanie
Możemy to zrobić w obie strony:
- Dodaj
-S
przełącza się za każdym razem, aby podpisać zatwierdzenie:git commit -S -m add new feature
- Skonfiguruj git, aby używał podpisywania jako opcji domyślnej:
git config --global commit.gpgsign true
W przypadku dystrybucji linuksa korzystającej z
gpg2
trzeba to wyraźnie ustawić:git config --global gpg.program gpg2
Sprawdzanie podpisów
Możesz łatwo sprawdzić, które zatwierdzenia są podpisane i zweryfikowane, korzystając ze stron repozytorium gitlab i GitHub. Każde podpisane zatwierdzenie będzie miało ładny zielony Verified
etykieta. Inną opcją sprawdzenia tego jest użycie git log
polecenie:
git log --show-signature
Po każdym podpisanym zatwierdzeniu zobaczysz informacje z gpg o statusie danego zatwierdzenia (czy jest zweryfikowane, czy nie):
Więcej informacji:
- https://help.github.com/articles/adding-a-new-gpg-key-to-your-github-account
- https://docs.gitlab.com/ee/user/project/repository/gpg_signed_commits/index.html
- https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
Chcesz porozmawiać z naszymi ekspertami na temat niestandardowych rozwiązań w zakresie tworzenia oprogramowania dla Twojej firmy?
P: Jak mogę wyeksportować swój klucz publiczny?
Aby wyeksportować klucz publiczny, uruchom polecenie "gpg -list-secret-keys -keyid-format LONG", aby znaleźć identyfikator klucza, a następnie uruchom polecenie "gpg -armor -export [identyfikator klucza]", aby wyeksportować klucz publiczny.
P: Jak dodać swój klucz publiczny do repozytorium git?
Aby dodać klucz publiczny do repozytorium git na Github, przejdź do ustawień profilu, do sekcji SSH i klucze GPG i kliknij Nowy klucz GPG, gdzie możesz wkleić i zapisać swój klucz. W Gitlab przejdź do ustawień użytkownika, do kluczy GPG, wklej swój klucz i naciśnij Dodaj klucz.