問題描述
每次commit 都會透過gpg驗證簽名。linux上的gpg工具已經很完整了,但是windows上的gpg工具不太完整,需要額外設定。
現在設定git已經安裝完畢。
作法
1. 在ubuntu上無需作業。如果是使用windows,就需要下載gpg工具: https://gnupg.org/download/
2. 設定windows上的gpg使用位置,位置需要修改到gpg安裝的位置:
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
3. 製作gpg key:
gpg --full-generate-key
裡面會有很多問答,就注意name跟email要跟github上面的帳號符合就可以了。
4. 把gpg public key放到github上。先看看gpg的資訊:
$ gpg --list-secret-keys --keyid-format=long
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot <hubot@example.com>
ssb 4096R/4BB6D45482678BE3 2016-03-10
gpg --armor --export 3AA5C34371567BD2
這邊會產生以 -----BEGIN PGP PUBLIC KEY BLOCK----- 並以 ---END PGP PUBLIC KEY BLOCK----- 結尾的字串。整段貼到github上:
settings > ssh and gpg keys > gpg keys > new gpg key
( 可參考: https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account )
到這邊,github端就設定完成。
5. client端首先要進行gpg key unset。git看起來有"預設"模式,如果加密的長度跟加密方法跟預設不同就有可能無法讀取。所以最好就重跑一次unset:
git config --global --unset gpg.format
接下來把設定git會使用的gpg key,後面的ID取法就跟上面透過gpg --list-secret-keys --keyid-format=long指令取得的結果一樣,依照上面的例子就是:
git config --global user.signingkey 3AA5C34371567BD2
6. 設定每次都認證:
git config --global commit.gpgsign true
Ref:
https://stackoverflow.com/questions/36810467/git-commit-signing-failed-secret-key-not-available
https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
沒有留言:
張貼留言