Add GnuPG cheatsheet
This commit is contained in:
parent
10a9f3cda6
commit
c790dc2326
|
@ -0,0 +1,230 @@
|
||||||
|
---
|
||||||
|
title: GnuPG
|
||||||
|
category: CLI
|
||||||
|
layout: 2017/sheet
|
||||||
|
tags: []
|
||||||
|
updated: 2017-10-18
|
||||||
|
weight: 0
|
||||||
|
intro: |
|
||||||
|
[GnuPG](https://gnupg.org/) is a complete and free implementation of the OpenPGP standard.
|
||||||
|
---
|
||||||
|
|
||||||
|
Basics
|
||||||
|
---------------
|
||||||
|
|
||||||
|
### Exporting keys
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -o key.gpg --export <KEY ID>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### __Export key in ASCII:__
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -o key.asc --armor --export <KEY ID>
|
||||||
|
```
|
||||||
|
|
||||||
|
__Note:__ Omitting the `-o|--output` option will print the key to `stdout`.
|
||||||
|
|
||||||
|
### Importing keys
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --import key.gpg
|
||||||
|
gpg --import key.asc
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Only merge updates for keys already in key-ring:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --import key.asc --merge-options merge-only
|
||||||
|
```
|
||||||
|
|
||||||
|
### Managing your keyring
|
||||||
|
|
||||||
|
#### Generate a new key:
|
||||||
|
```bash
|
||||||
|
gpg --gen-key
|
||||||
|
# or, generate a new key with dialogs for all options
|
||||||
|
gpg --full-gen-key
|
||||||
|
```
|
||||||
|
|
||||||
|
#### List public keys:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -k
|
||||||
|
gpg --list-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
#### List secret keys:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -K
|
||||||
|
gpg --list-secret-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Using a keyserver
|
||||||
|
|
||||||
|
#### Import keys from keyserver:
|
||||||
|
```bash
|
||||||
|
gpg --receive-keys <KEY IDS>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Upload keys to keyserver:
|
||||||
|
```bash
|
||||||
|
gpg --send-keys <KEY IDS>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Request updates from keyserver for keys already in your keyring:
|
||||||
|
```bash
|
||||||
|
gpg --refresh-keys
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Search keys from keyserver:
|
||||||
|
```bash
|
||||||
|
gpg --search-keys "<SEARCH STRING>"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Override keyserver from `~/.gnupg/gpg.conf`
|
||||||
|
```bash
|
||||||
|
gpg --keyserver <URL> ...
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Encrypting
|
||||||
|
---------
|
||||||
|
{: .-two-column}
|
||||||
|
|
||||||
|
### Public key encryption
|
||||||
|
This will produce an encrypted file, `secret.txt.gpg`, that can only be decrypted by the recipient:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -e -o secret.txt.gpg -r <RECIPIENT> secret.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
For `<RECIPIENT>` you can use their key ID, their email, or their name (or part thereof).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -e -r <KEY ID> ...
|
||||||
|
gpg -e -r "Bez" ...
|
||||||
|
gpg -e -r "bezalelhermoso@gmail.com" ...
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Specifying multiple recipients
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -e -r <RECIPIENT> -r <ANOTHER RECIPIENT> ... secret.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
__NOTE__: Omitting `-o|--output` will produce an encrypted file named `<ORIGINAL FILENAME>.gpg` by default.
|
||||||
|
|
||||||
|
### Symmetric encryption
|
||||||
|
|
||||||
|
Encrypt file using a shared key. You will be prompted for a passphrase.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --symmetric secret.txt
|
||||||
|
# or
|
||||||
|
gpg -c secret.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Decrypting
|
||||||
|
---------
|
||||||
|
{: .-one-column}
|
||||||
|
|
||||||
|
### Decrypting a file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -d -o secret.txt secret.txt.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
If the file is encrypted via symmetric encryption, you will be prompted for the passphrase.
|
||||||
|
|
||||||
|
__NOTE__: Omitting `-o|--output` will print the unencrypted contents to `stdout`
|
||||||
|
|
||||||
|
Signing & Verifying
|
||||||
|
---------
|
||||||
|
{: .-two-column}
|
||||||
|
|
||||||
|
### Signing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -o signed-file.txt.gpg -s file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
#### This can be used during encryption to also sign encrypted files:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -s -o secret.txt.gpg \
|
||||||
|
-r <RECIPIENT> secret.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verifying a signature
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --verify file.txt.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Viewing content of signed file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -d signed-file.txt.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
Miscellaneous
|
||||||
|
----------
|
||||||
|
{: .-two-column}
|
||||||
|
|
||||||
|
### Components
|
||||||
|
|
||||||
|
List all components:
|
||||||
|
{: .-setup}
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpgconf --list-components
|
||||||
|
```
|
||||||
|
|
||||||
|
Kill a component:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpgconf --kill <COMPONENT> # i.e. gpgconf --kill dirmngr
|
||||||
|
```
|
||||||
|
|
||||||
|
Kill all components:
|
||||||
|
```bash
|
||||||
|
gpgconf --kill all
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parsing keyring data
|
||||||
|
|
||||||
|
Use `--with-colons` to produce an output that can easily be parsed i.e. with `awk`, `grep`, etc:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg -k --with-colons
|
||||||
|
```
|
||||||
|
|
||||||
|
Field Quick Reference:
|
||||||
|
|
||||||
|
| Field | Description |
|
||||||
|
| 1 | Record type |
|
||||||
|
| 2 | Validity |
|
||||||
|
| 3 | Key length in bits |
|
||||||
|
| 4 | Public key algoritm |
|
||||||
|
| 5 | Key ID |
|
||||||
|
| 6 | Creation date |
|
||||||
|
| 7 | Expiry date |
|
||||||
|
| 8 | Certifcate S/N, UID hash, trust signature info |
|
||||||
|
| 9 | Ownertrust |
|
||||||
|
| 10 | User ID |
|
||||||
|
| 11 | Signature class |
|
||||||
|
| 12 | Key capabilities |
|
||||||
|
| 13 | Issuer fingerprint |
|
||||||
|
| 14 | Flag field |
|
||||||
|
| 15 | S/N of token |
|
||||||
|
| 16 | Hash algorithm |
|
||||||
|
| 17 | Curve name |
|
||||||
|
| 18 | Compliance flags |
|
||||||
|
| 19 | Last update timestamp |
|
||||||
|
| 20 | Origin |
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue