web-dev-qa-db-ja.com

OSX:コマンドラインで一致するすべての証明書を削除します

シェルスクリプトを使用して、一致するすべての証明書を削除します。

以下を使用して証明書のリストを見つけました。

security find-certificate -c "certificatename" -a -Z|grep SHA-1|awk '{ print $NF }'

出力は次のようになります。

$ bash delete-cert.sh 
62D58774F9329FA1F96A2BB0C090130305B879ED
94B149CFDF32BDB1C9C28179FB586291167EC235

ここで、これらのSHA-1ハッシュのそれぞれに対してdeleteコマンドを実行したいのですが、どうすればよいですか?

Sudo security delete-certificate -Z hash

私はこのようにしていた、

hashes=$(security find-certificate -c "certificatename" -a -Z|grep SHA-1|awk '{ print $NF }')
for hash in $hashes; do
    echo deleting $hash
    Sudo security delete-certificate -Z $hash
done

しかし、私は#chaosによる1行のソリューションが好きです

3
karim

これを使って:

security find-certificate -c "certificatename" -a -Z | \
  Sudo awk '/SHA-1/{system("security delete-certificate -Z "$NF)}'

awkSudoで呼び出されます。次に、awkは文字列SHA-1を検索し、ハッシュを引数としてsecurity delete-certificateコマンドを呼び出します。 Sudoパスワードは1回だけ入力する必要があります。

5
chaos