it-swarm.com.de

Meinen Gnupg-Schlüsselbund aufräumen?

Mein Gnupg-Schlüsselbund enthält Hunderte von unnötigen Einträgen. Wie entferne ich die abgelaufenen, widerrufenen und nicht signierten Schlüssel?

Ich möchte die Schlüssel, die meinen Schlüssel signiert haben, behalten und nur nach Bedarf neue Schlüssel importieren. Zuvor hatte ich das gesamte Vertrauensnetz für die Unterzeichner meines Schlüssels importiert. Es scheint, dass einer meiner Schlüsselunterzeichner auf seinen Reisen sehr viele Unterschriften gesammelt hat, die jetzt meinen Schlüsselbund verstopfen.

42
scruss

Aus Charles Lockharts GPG-Spickzettel :

Ich habe User Name als den Namen verwendet, der dem Schlüssel zugeordnet ist. Sorry, das ist nicht sehr einfallsreich. Ich denke, dass gpg in seinen Benutzerzuweisungen ziemlich weit gefasst ist, z. B. lautet der Name für meinen privaten Schlüssel "Charles Lockhart", aber ich kann darauf verweisen, indem ich einfach "Lockhart" eingebe. Das ergibt keinen Sinn, sorry.

um einen öffentlichen Schlüssel (aus Ihrem öffentlichen Schlüsselbund) zu löschen:

$ gpg --delete-key "User Name"

Dadurch wird der öffentliche Schlüssel aus Ihrem öffentlichen Schlüsselbund entfernt.
HINWEIS: Wenn Ihr privater Schlüsselring einen privaten Schlüssel enthält, der diesem öffentlichen Schlüssel zugeordnet ist, wird eine Fehlermeldung angezeigt! Sie müssen zuerst Ihren privaten Schlüssel für dieses Schlüsselpaar aus Ihrem privaten Schlüsselbund löschen.

um einen privaten Schlüssel (einen Schlüssel auf Ihrem privaten Schlüsselbund) zu löschen:

$ gpg --delete-secret-key "User Name"

Dadurch wird der geheime Schlüssel aus Ihrem geheimen Schlüsselbund gelöscht.

32
MelBurslan

Ich habe ein Bash-Skript geplant, das wöchentlich von Cron ausgeführt wird, um dies zu handhaben:

#!/bin/bash
# Clean up the GPG Keyring.  Keep it tidy.
# blog.lavall.ee

echo -n "Expired Keys: "
for expiredKey in $(gpg2 --list-keys | awk '/^pub.* \[expired\: / {id=$2; sub(/^.*\//, "", id); print id}' | fmt -w 999 ); do
    echo -n "$expiredKey"
    gpg2 --batch --quiet --delete-keys $expiredKey >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo -n "(OK), "
    else
        echo -n "(FAIL), "
    fi
done
echo done.

echo -n "Update Keys: "
for keyid in $(gpg -k | grep ^pub | grep -v expired: | grep -v revoked: | cut -d/ -f2 | cut -d' ' -f1); do
    echo -n "$keyid"
    gpg2 --batch --quiet --edit-key "$keyid" check clean cross-certify save quit > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo -n "(OK), "
    else
        echo -n "(FAIL), "
    fi
done
echo done.

gpg2 --batch --quiet --refresh-keys > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "Refresh OK"
else
     echo "Refresh FAIL."
fi
8
Warren Lavallee
% gpg --edit-key KEYID
gpg> clean
User ID [...]: 139 signatures removed
gpg> save
% gpg --version
gpg (GnuPG) 1.4.18
[...]
4
fche
echo -n "Expired Keys: "
list_expired_keys="$(gpg2 --list-keys | grep -1 pub | sed 'N;s/\n/ /' | awk '/^pub.* \[expired\: / {id=$7; sub(/^.*\//, "", id); print id}' | fmt -w 999)";
list_revoked_keys="$(gpg2 --list-keys | grep -1 pub | sed 'N;s/\n/ /' | awk '/^pub.* \[revoked\: / {id=$7; sub(/^.*\//, "", id); print id}' | fmt -w 999)";
for key in $list_expired_keys $list_revoked_keys; do
    echo -n "$key"
    gpg2 --batch --quiet --delete-keys $key >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo -n "(OK), "
    else
        echo -n "(FAIL), "
    fi
done
echo done.

hier ist ein Bash-Skript, das den Job erledigt. Es ist eine Anpassung von https://superuser.com/a/859739 für gpg2, wobei sich die Schlüssel-ID in der zweiten Zeile befindet.

0
Brian