LoginSignup
0
0

[備忘録]gpg failed to sign the data他の対策

Last updated at Posted at 2024-04-16

目次

  1. 実現したかったこと
  2. 最初に行ったこと
  3. 起こった問題
  4. 原因と思われるもの
  5. 最終的に実施した手順
  6. かなり参考になった記事

実現したかったこと

  • 各コミットにGPGキーを使った(検証済みの)署名を付けたかった
  • 理想はgit commit -S -m "commit message"で、"Verified"がつくコミットを作成できる状態

最初に行ったこと

起こった問題

  • Github設定ページで公開鍵登録時、検証されていない旨のエラーによりサブキーが登録できない
  • メインキーを使って署名付きコミットを実行しようとすると、
    error: gpg failed to sign the dataが発生してコミットできない

原因と思われるもの

  • Github設定ページで公開鍵登録時、検証されていない旨のエラーによりサブキーが登録できない
    クロス認証が必要
  • メインキーを使って署名付きコミットを実行しようとすると、
    error: gpg failed to sign the dataが発生してコミットできない
    鍵検証に加えて鍵のUsage設定が一部不足?

最終的に実施した手順

  1. 既存のGPG鍵有無を確認する
    gpg --list-secret-keys --keyid-format=long
    
  2. (GPG鍵を生成していなかったとして)新しくGPG鍵作成
    gpg --full-generate-key
    # Use default in any question, and use new passphrase
    
    • ここで各選択肢をデフォルトのまま進めていくと設定不足で以下問題が発生する
      • 問題①:デフォルトのままだとサブキーの属性に"S"が付与されない
      • 問題②:作成した状態のままだとサブキーが検証されてない?
  3. GPG鍵を再確認
    gpg --list-secret-keys --keyid-format=long
    
  4. 鍵の用途を修正
    • ここでサブキーの属性に"S"を付与し、問題の原因①が解決
    gpg --edit-key [Github user name]
    ※gpg> key 1
    ※gpg> change-usage
    ※Your selection? s
    ※Your selection? q
    ※gpg> save
    
  5. GPG鍵にCross-Cretificationを設定する
    • たぶん前ステップと一緒にできる
    • ここでサブキーの検証が行われ、問題の原因②が解決
    gpg --edit-key [Github user name]
    ※gpg> key 1
    ※gpg> cross-certify
    ※gpg> save
    
  6. メイン側のキーIDをコピー
    $ gpg --list-secret-keys --keyid-format=long
    ...
    ------------------------------------
    sec   XXXXX/[Main key ID (ここをコピー)] [Created date] [expires: YYYY-MM-DD]
    uid                          [Github user name] <email address>
    ssb   XXXXX/[Sub key ID(Do not need to copy)] [Created date]
    
  7. コミットのたびに-Sオプション付けるのは面倒なので、.gitconfigに署名設定追加
    git config --global user.signingkey [前ステップでコピーしたキーID]
    git config --global commit.gpgsign true
    
  8. 公開鍵を出力してコピー
    gpg --armor --export [前々ステップでコピーしたキーID]
    Prints the GPG key ID, in ASCII armor format
    # 公開鍵が出てくるので、コピー
    
  9. Githubのユーザ設定ページに入って、GPG鍵を登録
  10. 自環境の場合、~/.bashrcの最後に以下追記が必要だった
    export GPG_TTY=$(tty)
    
  11. ~/.bashrcをリロード
    source ~/.bashrc
    

かなり参考になった記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0