Aller au contenu

Création de votre paire de clés principales

  1. Lancez l'assistant de génération de paires de clés

    ```
     gpg --full-generate-key --expert
    ```
    
  2. Sélectionnez l'option (9) ECC et ECC pour le type de clé

  3. Sélectionnez l'option (1) Curve 25519 pour la courbe elliptique

  4. Définissez la période de validité de votre choix, idéalement inférieure à 1 an

  5. Veuillez indiquer votre nom réel et votre adresse courriel à associer à cette paire de clés. L'adresse courriel doit correspondre à votre adresse courriel Github vérifiée ou être définie sur your-github-username@users.noreply.github.com.

  6. Entrez une phrase secrète (deux fois)

Création d'une paire de clés de signature

  1. Ajoutez une sous-clé de signature

    ```
     gpg --expert --edit-key my@email.addr
     gpg> addkey
    ```
    
  2. Sélectionnez l'option (10) ECC (sign only) pour le type de clé

  3. Sélectionnez l'option (1) Curve 25519 pour la courbe elliptique

  4. Définissez la période de validité de votre choix, idéalement inférieure à 1 an

  5. Confirmez les invites et saisissez une phrase secrète (deux fois)

  6. Sauvegarder et quitter

    ```
     gpg> save
    ```
    

Création d'un certificat de révocation

```
gpg --output my_email_addr.gpg-revocation-certificate --gen-revoke my@email.addr
```

Sauvegardez votre paire de clés

Exportez la paire de clés primaires (conservez-les dans un endroit très sûr avec le certificat de révocation)

```
gpg --export-secret-keys --armor my@email.addr > my_email_addr.private.gpg-key
gpg --export --armor my@email.addr > my_email_addr.public.gpg-key
```

Enlevez la paire de clés principale de votre porte-clés

  1. Exportez toutes les sous-clés de la nouvelle paire de clés dans un fichier

    ```
     gpg --export-secret-subkeys my@email.addr > $HOME/.gnupg/subkeys
    ```
    
  2. Supprimer la clé principale du porte-clés - ASSUREZ-VOUS DE SAUVEGARDER VOTRE PAIRE DE CLÉS PRINCIPALES AU PRÉALABLE !

    ```
     gpg --delete-secret-key my@email.addr
    ```
    
  3. Réimportez les clés précédemment exportées

    ```
     gpg --import $HOME/.gnupg/subkeys
    ```
    
  4. Cherchez sec# au lieu de sec dans le résultat ; le symbole dièse (#) indique que la sous-clé de signature ne fait pas partie de la paire de clés située dans le trousseau.

    ```
     gpg --list-secret-keys $HOME/.gnupg/secring.gpg
    ```
    

Révocation d'une paire de clés de signature

Trouvez la paire de clés principales et importez-la (de préférence dans un système éphémère comme une clé USB live)

```
gpg --import /path/to/my_email_addr.public.gpg-key /path/to/my_email_addr.private.gpg-key
gpg --edit-key my@email.addr
gpg> revkey
[ passphrase twice ]
gpg> save
```

Renouveler une paire de clés expirée ou sur le point d'expirer

```
gpg --edit-key my@email.addr
[select a key]
gpg> expire
[specify an expiration]
gpg> save
```

Création d'un commit Git signé unique

```
git commit -S -m "my awesome signed commit"
```

Configuration de Git afin de toujours signer les commits avec une clé spécifiée

```
$ gpg --list-secret-keys --keyid-format=long # grab the fingerprint from the 'sec' line
git config [--global] commit.gpgsign true
git config [--global] user.signingkey DEADB33FBAD1D3A
```

Configuration de VSCode pour signer les commits

```
# User or workspace setting
"git.enableCommitSigning": true
```

Téléchargement de votre clé publique sur un serveur de clés

```
gpg --keyserver pgp.mit.edu --send-keys 0xDEADB33FBAD1D3A
```

Assurez-vous que votre clé a été publiée

```
gpg --keyserver pgp.mit.edu --search-key my@email.addr
```

Références

OpenPGP Best Practices
Github: Signing Commits
Braincoke's Log: Create a GPG Key
Creating the Perfect GPG Keypair
Digital Neanderthal: Generate GPG Keys With Curve Ed25519

Additional Information

If you have questions with respect to this content or to report concerns regarding the use or misuse content please do not hesitate to contact us at info@rockylinux.org.

Rocky Linux and the Rocky Enterprise Software Foundation (RESF) does not make any express or implied warranties, including but not limited to the warranties of non-infringement of any third party intellectual property rights. RESF does not warrant that any pending trademark applications for trademarks of RESF will result in any granted trademark protection. RESF shall not be liable for any claims relating to user's activities falling within the scope of the permission and user hereby agrees to indemnify, defend and hold RESF and its contributors harmless against any such claim.

This content is licensed under under Attribution-Share Alike 4.0 International license unless otherwise noted.

Author: Al Bowles