这是我用来根据证书的公用名清除旧用户证书的方法。
在我的特殊情况下,我的 Mac 用户绑定到 Active Directory,并且他们安装了“用户证书”。
证书的公用名是用户名,而不是用户的“用户名”。
在我的环境中,用户名是 first.last。
因此,首先,我获取用户 login.keychain 的路径并去掉周围的引号,然后将其通过管道传输到一个名为“$Keychain_Name”的字符串变量中。
然后,我的脚本通过查找当前登录的用户、搜索“名称:”字段并使用 awk 获取所需的信息(First Last)来检索证书的通用名称。这将通过管道传输到字符串“$Common_Name”中。
然后我使用带有两个字符串变量的安全删除证书,瞧,证书被删除了!
下面的脚本...
#!/bin/sh
# CLEAR SCREEN
clear
echo "######################################################################"
echo "# Certificate Removal Script"
echo "# Written by Caine Hörr"
echo "# Written on Wednesday, July 17, 2013"
echo "# Last updated by Caine Hörr"
echo "# Last updated on Wednesday, July 17, 2013"
echo "######################################################################"
echo
echo
echo "Gathering Keychain Info"
Keychain_Name=$(security list-keychains | grep $(echo $USER) | tr -d '"')
echo
echo "Gathering Certificate Common Name Info"
Common_Name=$(finger $(echo $USER) | grep "Name:" | awk '{ print $4, $5 }')
echo
echo "Deleting Certificate $Common_Name from $Keychain_Name"
security delete-certificate -c "$Common_Name" $Keychain_Name
echo
echo "Process Complete"
exit
希望这能给你一些思考!