30

コマンドで「セキュリティ」ターミナルアプリケーションを使用して、iOS開発用の開発者ID(証明書+秘密鍵)をキーチェーンにインポートしました

security import identity.p12 -k <keychain> -P <passphrase>

これにより、p12 ファイルに含まれる証明書と秘密鍵の両方のアイテムが、指定されたキーチェーンにインポートされます。-T /usr/bin/codesignただし、秘密鍵のアクセス リストにコードサイン アプリケーションを追加するを指定するのを忘れていました。コードサイン アプリをアクセス リストに追加しようとしましたが、役に立ちませんでした。

  • パラメーターを追加して ID を再インポートしようとしましたが、秘密鍵のアクセス リストは変更されないようです。
  • security delete-certificateまた、再インポートを使用してキーチェーンから証明書を削除しようとしました。これは、秘密鍵のアクセス リストを変更しません。

マシンへの ssh アクセスしかできないため、キーチェーン GUI アプリケーションを使用しても機能しません。したがって、キーチェーンから秘密鍵を削除する方法を探しています (後で ID を再インポートできるようにするため)。ツールのマニュアル ページを確認しましたがsecurity、秘密鍵を削除する方法が見つかりませんでした。

ターミナルコマンドのみを使用してキーチェーンから秘密鍵を削除する方法はありますか (問題のマシンへの ssh アクセスしかできないため)。

4

2 に答える 2

37

システムにはいくつかのキーチェーンがあります。

sudo security list-keychains
"/Users/JonDoe/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"

System-Keychain にインポートしたと思います: 変更を加える前に (または選択した他のキーチェーン)、まず System Root Certificates のバックアップを作成します。

cd /System/Library/Keychains/
sudo cp SystemRootCertificates.keychain SystemRootCertificates.keychain.old

キーチェーン内のすべてのキーチェーン / すべての証明書を一覧表示します。

ls -l /System/Library/Keychains/
sudo security dump-keychain /System/Library/Keychains/SystemRootCertificates.keychain

2 番目のコマンドでは、キーチェーンの各証明書が表示されます。削除する証明書を特定します。次に、次のコマンドで証明書を削除します。

sudo security delete-certificate -Z <SHA-1 hash of certificate> /System/Library/Keychains/SystemRootCertificates.keychain
**alternative:**
sudo security delete-certificate -c <common name of certificate> /System/Library/Keychains/SystemRootCertificates.keychain

それで全部です。これで、証明書を再度インポートできます。エラーが発生した場合は、次のコマンドでキーチェーンを復元できます。

sudo security import certificate_files_backup -k /System/Library/Keychains/SystemRootCertificates.keychain -t cert
于 2011-10-12T15:42:47.240 に答える