---
categories: vpn sysadmin security network
title: Howto shellpki
...

[shellpki](https://forge.evolix.org/projects/shellpki/repository) est un script Shell pour gérer une petite [PKI](https://fr.wikipedia.org/wiki/Infrastructure_%C3%A0_cl%C3%A9s_publiques) en ligne de commandes.

## Installation

Cloner le repository dans le répertoire de votre choix, et créez un répertoire pour publier les certificats. Par exemple :

~~~
# git clone https://forge.evolix.org/shellpki.git /usr/local/shellpki
# mkdir /var/www/shellpki
~~~

Ajuster le nom des répertoires choisis dans le script `shellpki.sh` :

~~~
PREFIX=/usr/local/shellpki
WWWDIR=/var/www/shellpki
~~~

Éditer les paramètres de la section `[ req_distinguished_name ]` du fichier `openssl.cnf`, notamment :

* `countryName_default` : mettre le code de votre pays
* `stateOrProvinceName_default` : mettre votre état (pour la France, le numéro de département par exemple)
* `localityName_default` : mettre le nom de votre ville
* `0.organizationName_default` : mettre le nom de votres structure

Enfin, initialiser la PKI avec :

~~~
# sh shellpki.sh init
~~~

Confirmer l'initialisation, et choisir la passphrase qui sera demandée à chaque création de nouveaux certificats, puis le _Common Name_ du certificat de l'autorité de certification.


## Créer un nouveau certificat

Pour créer une nouvelle clé privée et un certificat associé signé par la PKI :

~~~
# sh shellpki.sh create
~~~

Il faudra ensuite choisir un _Common Name_ unique et entrer la passphrase de la PKI.


## Renouveller un certificat

Il faut le révoquer, puis en recréer un :

~~~
# sh shellpki.sh revoke
# sh shellpki.sh create
~~~

## Troubleshooting 

### TXT_DB error

À la création d'un certificat, si nous avons l'erreur suivante :

~~~
failed to update database
TXT_DB error number 2
~~~

Il faut éditer le fichier /etc/openvpn/ssl/ca/index.txt et supprimer la ligne concernant le CN qui pose problème.