Procédure pour générer un certificat serveur

Les serveurs extérieurs au PCC OVH (Online, Iéna...) ont besoin d'un tunnel VPN OpenVPN avec authentification via certificat

1- Se rendre sur toutatis.gorgu.net puis lancer:

cd /etc/puppet/environment/production/modules/openvpn-client/files
./gen_open_vpn_key_serveur.sh hostname_du_serveur_client

Voici pour informations les opérations effectuées étapes par étapes par le script :

#! /bin/bash

#Definition des variables
DIR="./"
DIRVPN="/appli/vpn/server-vpn.gorgu.net/data/easyrsa3"

#Génération clé priv et demande csr
openssl genrsa 4096 > $DIR/$1.key
openssl req -new -key $DIR/$1.key > $DIR/$1.csr

#Copie csr vers charon
scp $DIR/$1.csr charon.gorgu.net:/appli/vpn/server-vpn.gorgu.net/data/easyrsa3/

#Signature du csr depuis charon et génération certificat
ssh charon.gorgu.net -t "echo "hello ${DIRVPN}" && cd ${DIRVPN} && ${DIRVPN}/easyrsa import-req ${DIRVPN}/${1}.csr ${1} && ${DIRVPN}/easyrsa sign-req client ${1}"

#Copie certificat depuis charon vers toutatis
scp charon.gorgu.net:/appli/vpn/server-vpn.gorgu.net/data/easyrsa3/pki/issued/$1.crt $DIR/$1.crt

#Copie clé privée depuis toutatis vers charon
scp $DIR/$1.key charon.gorgu.net:/appli/vpn/server-vpn.gorgu.net/data/easyrsa3/pki/private/$1.key

#Apply droits sur certificat et clé privée
chmod 777 $DIR/$1.*

#Suppresion demande csr sur toutatis
rm $DIR/$1.csr

 

2- Saisir le CSR (certificat request) comme ci-dessous :

laisser tous les champs vides en appuyant sur '.' à part pour le champs Common Name où il faut indiquer le hostname du server : theia dans l'exemple
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:theia
Email Address []:.
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

 

Répondre "yes" au script à l'étape de la signature, puis saisir la pass phrase du certificat racine "/appli/vpn/server-vpn.gorgu.net/data/easyrsa3/pki/private/ca.key" situé sur le serveur charon (voir dans LastPass)

 

Le script recopie le certificat .crt de charon vers toutatis, et la clé privée de toutatis vers charon.

 

Si une erreur apparaît, voir les logs syslog sur charon

3- Il faut ensuite installer OpenVPN et le certificat de la machine via puppet, ou bien manuellement :

 

Si une erreur "failed to update database" apparait lors de la génération du certificat : un certificat existe déjà pour le nom de host, il faut aller sur charon, éditer le fichier "/appli/vpn/server-vpn.gorgu.net/data/easyrsa3/pki/index.txt" et supprimer la ligne correspondant au certificat puis recommencer l'opération.

 

subject=
commonName = polymathee

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /appli/vpn/server-vpn.gorgu.net/data/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /appli/vpn/server-vpn.gorgu.net/data/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'polymathee'
Certificate is to be certified until May 19 08:40:27 2117 GMT (36500 days)
failed to update database
TXT_DB error number 2
Easy-RSA error:
signing failed (openssl output above may have more detail)
Connection to charon.gorgu.net closed.