How to generate GPG keys using GPG on Linux
Getting your GPG public and private keys were never easy. Available manuals were written in language average person is not able to understand. Here is the simple way of creating your public and private GPG keys on a Linux-based machine (VM or physical).
To complete this tutorial, you will need following:
Linux based machine (virtual or physical)
GPG version minimum 1.4.5
To check what version of GPG you run on your Linux machine, run the following command:
gpg --help
The very fist line will show you the program version, in my case 1.4.18
gpg (GnuPG) 1.4.18 Copyright (C) 2014 Free Software Foundation, Inc.
Use the following command to start generating your keys (Please note that the recommended answers and commands you need to run are printed in bold):
Now we generate the initial key:
gpg --gen-key Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 4
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) <- Accept the default value by clicking Enter Requested keysize is 2048 bits
Please specify how long the key should be valid. 0 = key does not expire d = 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) <- Accept the default value by clicking Enter Key does not expire at all Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter)" Real name: Sef Email address: sef@sefnet.tech Comment: You selected this USER-ID: "Sef" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key. Enter passphrase: ******** Repeat passphrase: ******** ......+++++ ....+++++ gpg: key 7E873EC2 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u pub 2048R/7E873EC2 2016-08-23 Key fingerprint = C56C 72BE B3E0 1D1E FF86 DA98 0F1F 1C1B 7E87 3EC2 uid Sef Note that this key cannot be used for encryption. You may want to use the command "--edit-key" to generate a subkey for this purpose.
gpg --edit-key 'Sef' gpg (GnuPG) 1.4.18; Copyright (C) 2014 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 2048R/7E873EC2 created: 2016-08-23 expires: never usage: SC trust: ultimate validity: ultimate [ultimate] (1). Sef
gpg> addkey Key is protected. You need a passphrase to unlock the secret key for user: "Sef" 2048-bit RSA key, ID 7E873EC2, created 2016-08-23 Enter passphrase: ******** <- Password you have earlier created
Please select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) Your selection? 6
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) <- Accept the default value by clicking Enter Requested keysize is 2048 bits
Please specify how long the key should be valid. 0 = key does not expire d = 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) <- Accept the default value by clicking Enter Key does not expire at all Is this correct? (y/N) y Really create? (y/N) y .....+++++ +++++ pub 2048R/7E873EC2 created: 2016-08-23 expires: never usage: SC trust: ultimate validity: ultimate\nsub 2048R/D13546D9 created: 2016-08-23 expires: never usage: E\n[ultimate] (1). Emir Sef
gpg> q Save changes? (y/N) y
gpg -k /root/.gnupg/pubring.gpg ------------------------ pub 2048R/7E873EC2 2016-08-23 uid Sef sub 2048R/D13546D9 2016-08-23
gpg --armor --output sef-pub-sub.asc --export 'Sef' cat sef-pub-sub.asc -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 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 dkCW5CzV1+Q==OuQ -----END PGP PUBLIC KEY BLOCK-----