I went to send an email the other day and I was halted when I discovered that my key had expired. I can’t believe that I’ve been using GPG for 6 months, but the time had come to generate a new keypair.
This post outlines the process to gererate a new keypair once your old keypair has expired.
The following command will show you your private/secret keys.
$ gpg --list-secret-keys sec 1024D/0884BC5C 2008-07-23 [expires: 2009-01-19] uid Michael Altfield ssb 2048g/EC0F0721 2008-07-23
You can see from the above output that my key (with the ID of: 0884BC5C) expired on January 19th, 2009.
—-
EDIT:
It was brought to my attention (thank you Victor Escudero) that, unless under rare circumstances, you should not create a new key when your old key expires. Instead, you should simply extend the life of your current key as follows:
$ gpg --edit-key 0884BC5C gpg (GnuPG) 2.0.9; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub 1024D/68C40535 created: 2009-01-21 expires: 2009-07-20 usage: SC trust: ultimate validity: ultimate sub 2048g/9040F433 created: 2009-01-21 expires: 2009-07-20 usage: E [ultimate] (1). Michael Altfield Command> expire Changing expiration time for the primary key. Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 1y Key expires at Sun 20 Jun 2010 10:28:12 AM EDT Is this correct? (y/N) y You need a passphrase to unlock the secret key for user: "Michael Altfield " 1024-bit DSA key, ID 68C40535, created 2009-01-21 can't connect to `/home/guttersnipe/.gnupg/S.gpg-agent': No such file or directory gpg: Invalid passphrase; please try again ... You need a passphrase to unlock the secret key for user: "Michael Altfield " 1024-bit DSA key, ID 68C40535, created 2009-01-21 pub 1024D/68C40535 created: 2009-01-21 expires: 2010-06-20 usage: SC trust: ultimate validity: ultimate sub 2048g/9040F433 created: 2009-01-21 expires: 2009-07-20 usage: E [ultimate] (1). Michael Altfield Command> save Save changes? (y/N) y $
—-
Issue the following command to re-generate a new keypair
$ gpg --gen-key
When you finish, re-run the `gpg –list-secret-keys` command to see the change.
sec 1024D/0884BC5C 2008-07-23 [expires: 2009-01-19] uid Michael Altfield ssb 2048g/EC0F0721 2008-07-23 sec 1024D/68C40535 2009-01-21 [expires: 2009-07-20] uid Michael Altfield ssb 2048g/9040F433 2009-01-21
The new key appears. Note the new key’s ID (here it’s 68C40535).
Of course, every GPG user should store their keys and a revocation certificate in a safe place. Run the following commands to generate these files.
Note: replace 68C40535 with your new key ID (as determined above).
gpg -a --output pubkey.asc --export 68C40535 gpg -a --output prikey.asc --export-secret-key 68C40535 gpg --output revoke.asc --gen-revoke 68C40535
Now, store these files on some cheap, portable media (CD/thumbdrive/SD card/etc), and hide it away somewhere safe. Once this has been done, be sure to shred (not just delete) your private key and revocation certificate; you don’t want anyone to get their hands on these files.
shred -u prikey.asc shred -u revoke.asc
Now, send your new public key out to all your friends! My new public key is available to download from my webserver.
Related Posts
Hi, I’m Michael Altfield. I write articles about opsec, privacy, and devops ➡
[…] New GPG Key […]