シェルスクリプトを使用して、一致するすべての証明書を削除します。
以下を使用して証明書のリストを見つけました。
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行のソリューションが好きです
これを使って:
security find-certificate -c "certificatename" -a -Z | \
Sudo awk '/SHA-1/{system("security delete-certificate -Z "$NF)}'
awk
はSudo
で呼び出されます。次に、awk
は文字列SHA-1
を検索し、ハッシュを引数としてsecurity delete-certificate
コマンドを呼び出します。 Sudo
パスワードは1回だけ入力する必要があります。