मेरे gnupg कीरिंग को साफ करें?


46

मेरे gnupg कीरिंग में सैकड़ों अनावश्यक प्रविष्टियाँ हैं। मैं इसमें से एक्सपायर्ड, निरस्त और अहस्ताक्षरित कुंजी कैसे निकालूंगा?

मैं उन कुंजियों को रखना चाहूँगा जिन्होंने मेरी कुंजी पर हस्ताक्षर किए हैं, और केवल आवश्यकतानुसार नई कुंजी आयात करें। मैंने पहले अपनी कुंजी के हस्ताक्षरकर्ताओं के लिए पूरे भरोसे का वेब आयात किया था। ऐसा लगता है कि मेरे एक प्रमुख हस्ताक्षरकर्ता ने अपनी यात्रा में बहुत बड़ी संख्या में हस्ताक्षर किए हैं, और ये अब मेरी कीरिंग को रोक रहे हैं।


1
मैं gpgtools.org का उपयोग करूंगा । हालाँकि, यह समय सीमा समाप्त करने में मदद नहीं करता है, लेकिन निश्चित रूप से gpg कुंजियों के प्रबंधन को आसान बनाता है
निक रोज

जवाबों:


37

चार्ल्स लॉकहार्ट की GPG धोखा शीट से :

मैंने User Nameकुंजी के साथ जुड़ा नाम होने के नाते उपयोग किया है । खेद है कि बहुत कल्पनाशील नहीं है। मुझे लगता है कि gpg अपने उपयोगकर्ता असाइनमेंट में बहुत व्यापक है, उदाहरण के लिए, मेरी निजी कुंजी का नाम "चार्ल्स लॉकहार्ट" है, लेकिन मैं इसे "लॉकहार्ट" में डालकर संदर्भित कर सकता हूं। इसका कोई मतलब नहीं है, क्षमा करें।

            ︙

सार्वजनिक कुंजी को हटाने के लिए (अपनी सार्वजनिक कुंजी रिंग से):

$ gpg --delete-key "User Name"

यह सार्वजनिक कुंजी को आपकी सार्वजनिक कुंजी रिंग से निकाल देता है।
नोट: यदि इस सार्वजनिक कुंजी से जुड़ी आपकी निजी कुंजी रिंग पर कोई निजी कुंजी है, तो आपको एक त्रुटि मिलेगी! आपको इस कुंजी जोड़ी के लिए अपनी निजी कुंजी को पहले अपनी निजी कुंजी रिंग से हटाना होगा।

एक निजी कुंजी (आपकी निजी कुंजी की अंगूठी पर एक कुंजी) को हटाने के लिए:

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

यह आपकी गुप्त कुंजी रिंग से गुप्त कुंजी को हटा देता है।


2
धन्यवाद; यह एक शुरुआत है, कम से कम। : मैं पता लगाने के लिए इसका इस्तेमाल करते हैं और समय सीमा समाप्त हो कुंजी सूचीबद्ध कर सकते हैंgpg --list-keys | awk '/^pub.* \[expired\: / {id=$2; sub(/^.*\//, "", id); print id}' | fmt -w 999 | sed 's/^/gpg --delete-keys /;'
scruss

"User Name"कम सार्वजनिक कुंजी भी हो सकती है
nmz787

8

मेरे पास इसे संभालने के लिए क्रॉन से साप्ताहिक चलाने के लिए एक बैश स्क्रिप्ट है:

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

आपकी स्क्रिप्ट $2के awkअनुभाग में क्या है ? और जब तक यह, क्या है $1? चीयर्स।
Cbhihe

इनपुट की वर्तमान लाइन में दूसरे और पहले (अंतरिक्ष-पृथक) क्षेत्र के लिए सामान्य awk सिंटैक्स।
18

मुझे समझ में नहीं आता है कि चाबियों का स्थानीय सफाई क्यों करना और फिर ... सभी सामानों को डाउनलोड करना जो आपने अभी कीसेवर से फिर से हटाए हैं --refresh-keys। मैं ताज़ा को स्क्रिप्ट के बीच में रखूंगा, अंत में नहीं।
लैपो

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

1
जब मैं उन चरणों का पालन करता हूं और फिर `gpg --list-keys` के साथ जांच करता हूं तो मैं वही पुरानी समय-सीमा समाप्त कुंजियों को
देखता रहता हूं

5
gpg cleanसमय-सीमा समाप्त कुंजियों को नहीं निकालता है, केवल समाप्त किए गए हस्ताक्षर
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.

यहाँ एक बैश-स्क्रिप्ट काम कर रही है। यह gpg2 के लिए https://superuser.com/a/859739 का एक रूपांतरण है जहां कुंजी आईडी दूसरी पंक्ति में है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.