Gnupg anahtarlığımı temizle?


46

Gnupg anahtarlığım yüzlerce gereksiz giriş içeriyor. Süresi dolmuş, iptal edilmiş ve imzasız anahtarları ondan nasıl kaldırırım?

Anahtarımı imzalayan anahtarları saklamak ve yalnızca gerektiği şekilde yeni anahtarlar almak istiyorum. Daha önce anahtarımın imzalayanları için tüm güven ağını içe aktarmıştım. Anahtar imzalayıcılarımdan birinin seyahatlerinde çok sayıda imza topladığı görülüyor ve bunlar şimdi anahtarlığımı tıkıyor.


1
Gpgtools.org'u kullanırdım . Ancak, süresi dolmuş kaldırmak için yardımcı olmuyor, ancak kesinlikle gpg anahtarlarının yönetimini kolaylaştırır
Nick Roz

Yanıtlar:


37

Charles Lockhart GPG Hile Sayfası'ndan :

User NameAnahtarla ilişkilendirilmiş ad olarak kullandım . Üzgünüm, bu çok yaratıcı değil. Ben düşünüyorum gpg örneğin kendi kullanıcı atamaları, oldukça geniş, benim özel anahtar için adı “Charles Lockhart” dir, ama sadece “Lockhart” oluşturarak bu başvurabilir. Bu hiç mantıklı gelmiyor, üzgünüm.

            ︙

bir genel anahtarı silmek için (genel anahtarlığınızdan):

$ gpg --delete-key "User Name"

Bu, genel anahtarı genel anahtarlığınızdan kaldırır.
NOT: Özel anahtarlığınızda bu ortak anahtarla ilişkilendirilmiş bir özel anahtar varsa, bir hata alırsınız! Bu anahtar çifti için özel anahtarınızı önce özel anahtarlığınızdan silmelisiniz.

Özel bir anahtarı silmek için (özel anahtarlığınızdaki bir anahtar):

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

Bu, gizli anahtarı, gizli anahtarlığınızdan siler.


2
Teşekkürler; bu en azından bir başlangıç. Süresi dolmuş anahtarları bulmak ve listelemek için kullanabilirim:gpg --list-keys | awk '/^pub.* \[expired\: / {id=$2; sub(/^.*\//, "", id); print id}' | fmt -w 999 | sed 's/^/gpg --delete-keys /;'
scruss

"User Name"kısa ortak anahtar olabilir
nmz787

8

Bunu ele almak için cron'dan haftalık olarak çalışması planlanan bir bash betiğim var:

#!/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

Ne $2de awkSenaryonuzun bölümünde? Ve o sırada, nedir $1? Şerefe.
Cbhihe

Geçerli giriş satırında ikinci ve ilk (boşlukla ayrılmış) alan için normal awk sözdizimi.
17'de

Neden anahtarları yerel olarak temizlediğimi ve sonra… yeni silme işleminden sildiğiniz tüm şeyleri tekrar indirirken neden anlamıyorum --refresh-keys. Yenilemeyi betiğin ortasına koyardım, sonuna değil.
lapo

4
% gpg --edit-key KEYID
gpg> clean
User ID [...]: 139 signatures removed
gpg> save
% gpg --version
gpg (GnuPG) 1.4.18
[...]

1
Bu adımları takip edip `gpg --list-keys` ile kontrol ettiğimde aynı eski süresi dolmuş anahtarları görmeye devam ediyorum ...
Cbhihe

5
gpg cleansüresi dolmuş anahtarları, yalnızca süresi dolmuş imzaları kaldırmaz
fche

0
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.

İşte işi yapan bir bash betiği. Anahtar kimliğinin ikinci satırda olduğu gpg2 için https://superuser.com/a/859739 uyarlamasıdır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.