web-dev-qa-db-ja.com

OS X Mojaveでgdbにコード署名する方法は?

Homebrewから($ brew install gdbを介して)gdbをインストールした後、私は これらの指示 に従って、gdbにプロセスに接続するためのアクセス許可を与えました。

コマンドを実行するステップに到達したとき:

$ codesign --entitlements gdb-entitlement.xml -fs gdb-cert $(which gdb)

終了コード1で、次のエラーが発生します。

/usr/local/bin/gdb: errSecInternalComponent

何が問題なのか理解できないため、動作するバージョンのgdbのインストールを続行できません。何か助けはありますか?

追加情報:

  • Mac OSXバージョン10.14.4

  • GDBバージョン8.3(homebrew経由)

  • ユーザーを_developerグループに追加しました。助けなかった

  • マシンを再起動しようとしましたが、Sudo killall taskgatedが役に立ちませんでした

  • 以前のバージョンのGDB(8.0.1)をインストールしようとしたが、同じ結果が得られた

2
camercu

最初に これらの手順 に従って証明書を作成してから gdb署名手順 を完了する前に実行すると、それを機能させることができました。唯一の例外は、証明書をログインに戻すのではなく、システムキーチェーンに保持する必要があったことです。

統合された一連の手順は次のとおりです。

適切な権限を持つ証明書の作成

  1. / Applications/Utilities/KeychainAccess.appを起動します
  2. キーチェーンアクセスで、ウィンドウの左上隅にある[キーチェーン]リストで[ログイン]キーチェーンを選択します。
  3. 次のメニュー項目を選択します。
    • キーチェーンアクセス->証明書アシスタント->証明書の作成...
  4. 次の設定を行います。
    • 名前= "gdb-cert"
    • IDタイプ=自己署名ルート
    • 証明書の種類=コード署名
    • [作成]をクリックします
    • 有効期限をカスタマイズできます(3650日= 10年)
    • [続行]をクリックします
    • [完了]をクリックします
  5. 「マイ証明書」をクリックします
  6. 新しい「gdb-cert」証明書をダブルクリックします
  7. 「信頼」開示の三角形を下げ、「コード署名」信頼プルダウンメニューまでスクロールし、「常に信頼」を選択し、必要に応じてユーザー名とパスワードを使用して認証します。
  8. メインの[キーチェーンアクセス]ウィンドウの左側にある[キーチェーン]ペインで、新しい「gdb-cert」コード署名証明書(同じ名前の公開キーまたは秘密キーではない)を「ログイン」キーチェーンから「システム」キーチェーンにドラッグします。 。これにより、この証明書が「システム」キーチェーンに移動します。さらに数回認証する必要があります。求められたら「常に信頼できる」に設定してください。
  9. キーチェーンアクセスGUIで、[システム]キーチェーンの[gdb-cert]をクリックしてデスクトップにドラッグします。ドラッグすると、次の手順で使用する「〜/ Desktop /gdb-cert.cer」ファイルが作成されます。
  10. ターミナルに切り替えて、以下を実行します:
    1. _Sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer_
    2. _rm -f ~/Desktop/gdb-cert.cer_
  11. 「gdb-cert」証明書を「システム」キーチェーンから「ログイン」キーチェーンにドラッグして戻します(そしておそらくまた戻ってきます...?) 編集:コメントごとに明らかに必要ではありません
  12. キーチェーンアクセスを終了する
  13. リブート

証明書の確認:

  1. _security find-certificate -c gdb-cert_->証明書が見つかった場合は、証明書に関する詳細を表示する必要があります
  2. _security find-certificate -p -c gdb-cert | openssl x509 -checkend 0_->証明書の有効期限が切れないと言う必要があります
  3. _security dump-trust-settings -d_->この証明書でコード署名の信頼設定が有効になっていることを示す必要があります(他の証明書/権限が表示される場合があります)

「entitlements.xml」ファイルの作成:

以下のテキストをコピーして、現在のディレクトリの「entitlements.xml」ファイルに保存します。

_<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.Apple.security.cs.debugger</key>
    <true/>
</dict>
</plist>
_

デバッガーバイナリへの署名

ターミナルで次のコマンドを実行します。

  1. codesign --entitlements entitlements.xml -fs gdb-cert $(which gdb)->資格付きのコードサイン
  2. codesign -vv $(which gdb)->コード署名を確認する
  3. codesign -d --entitlements - $(which gdb)->コード署名の詳細を表示する

システム証明書の更新

マシンを再起動します

2
camercu