diff --git a/HowtoOpenVPN.md b/HowtoOpenVPN.md
new file mode 100644
index 00000000..1a67168a
--- /dev/null
+++ b/HowtoOpenVPN.md
@@ -0,0 +1,433 @@
+# Howto OpenVPN
+
+https://openvpn.net/index.php/open-source/documentation.html
+
+## Installation sous OpenBSD
+
+
+ # pkg_add openvpn
+
+
+On gère une PKI sur le serveur via shellpki (voir ci-dessous).
+On crée clé/certificat pour le serveur VPN avec la commande suivante :
+
+
+ # cd /etc/openvpn/ssl
+ # sh shellpki.sh create
+
+
+Note : le CN sera par exemple de la forme `fw.vpn.example.com` (il sera demandé de le saisir deux fois).
+
+La configuration se fera via un fichier `/etc/openvpn/server.conf` avec les paramètres suivants à adapter :
+
+ * `server` : réseau privé sur lequel le serveur VPN et les clients communiqueront
+ * `local` : adresse IP du serveur, sur laquelle les clients se connecteront (adresse IP publique généralement)
+ * `push` : route vers le réseau que les clients VPN pourront joindre
+ * `cert` : certificat du serveur VPN (créé précédemment)
+ * `key` : clé du serveur VPN (créée précédemment)
+ * `ifconfig-pool-persist` : permet aux clients de conserver la même IP en cas de redémarrage
+
+
+
+ daemon
+
+ port 1194
+ proto udp
+ dev tun0
+ dev-type tap
+ verb 4
+
+ user nobody
+ group nobody
+ chroot /var/empty
+ #comp-lzo
+
+ max-clients 50
+ keepalive 15 120
+ tls-exit
+ persist-key
+ persist-tun
+ client-to-client
+ resolv-retry infinite
+
+ server 10.11.99.0 255.255.255.0
+ local 198.51.100.1
+ #client-to-client
+ ifconfig-pool-persist /etc/openvpn/ipp.txt
+ #route-method exe
+ #route-delay 2
+ push "route 192.0.2.0 255.255.255.0 10.11.99.1"
+
+ ca /etc/openvpn/ssl/ca/cacert.pem
+ dh /etc/openvpn/ssl/ca/dh1024.pem
+
+ cert /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.crt
+ key /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.key
+
+ log /var/log/openvpn.log
+ status /var/log/openvpn-status.log
+
+ cipher AES-128-CBC # AES
+
+ #fragment 1350
+ #mssfix
+
+
+Pour créer automatiquement une interface `TUN` au démarrage de la machine et démarrer OpenVPN :
+
+
+ # cat << EOF > /etc/hostname.tun0
+ up
+ !/usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf
+ EOF
+
+
+Pour lancer manuellement OpenVPN sans redémarrer la machine :
+
+
+ # ifconfig tun0 up
+ # /usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf
+
+
+### Rotation des logs sous OpenBSD
+
+Pour que les logs générés par OpenVPN soient rotatés, ne pas oublier de décommenter la ligne en question dans le fichier _/etc/newsyslog.conf_ :
+
+ /var/log/openvpn.log 600 52 * $W6D4 Z
+
+
+## Installation sous Debian
+
+
+ # apt install openvpn
+
+
+La configuration se fera via un fichier `/etc/openvpn/server.conf` :
+
+
+
+ #
+ # General settings
+ #
+
+ user nobody
+ group nogroup
+
+ # Do not try to re-read key file and reopen tun device on restart since it runs
+ # without root privileges.
+ persist-key
+ persist-tun
+ #persist-remote-ip
+ #persist-local-ip
+
+ # Status file
+ status /var/log/openvpn/status.log 1
+ #log /var/log/openvpn/openvpn.log
+ # Logging verbosity. Logs are sent to syslog.
+ verb 3
+
+ # Keepalive
+ keepalive 10 120
+ #reneg-sec 300
+
+ #
+ # Network settings
+ #
+
+ port 1194
+ proto udp
+ dev tun
+
+ # Enable compression
+ comp-lzo
+
+ #
+ # key/certificate
+ #
+
+ ca /etc/openvpn/ssl/ca/cacert.pem
+ cert /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.crt
+ key /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.key
+ dh /etc/openvpn/ssl/ca/dh1024.pem
+
+ #
+ # private network
+ #
+
+ server 172.16.0.0 255.255.0.0
+ mode server
+
+ # Management interface (used by check_openvpn for Nagios)
+ management 127.0.0.1 1195 /etc/openvpn/management-pwd
+
+
+Générer un mot de passe pour l'accès à l'interface de management (nécessaire au check Nagios) :
+
+ # apg -n1 -m 12 >/etc/openvpn/management-pwd
+
+
+### check OpenVPN pour Nagios
+
+Ajouter le check Nagios dans la conf NRPE :
+
+
+ # echo "command[check_openvpn]=/usr/lib/nagios/plugins/check_openvpn.pl -H 127.0.0.1 -p 1195 -P $(cat /etc/openvpn/management-pwd)" >>/etc/nagios/nrpe.d/evolix.cfg
+
+
+Récupérer le script depuis le CVS _scripts_, et installer les dépendances (TODO: à mettre le script en public)
+
+
+ # apt install libnet-telnet-perl
+
+
+
+## Mise en place d'une PKI avec shellPKI (OpenBSD et Debian)
+
+OpenVPN s'appuye par défaut sur des certificats, il est donc nécessaire de mettre en place une PKI.
+On utilisera [shellPKI](https://forge.evolix.org/projects/shellpki) permettant de gérer une PKI très simplement en ligne de commande.
+
+* Créer le répertoire `/etc/openvpn/ssl`, et cloner le dépôt shellpki :
+
+ # mkdir /etc/openvpn/ssl
+ # cd /etc/openvpn/ssl
+ # git clone https://forge.evolix.org/shellpki.git .
+
+* Créer le répertoire _/var/www/htdocs/vpn/ssl_ (OpenBSD) ou _/var/www/vpn/ssl_ (Debian) dans lequel les certificats seront copiés par défaut pour être distribués. Cet emplacement est configurable dans `shellpki.sh`
+* Editer les paramètres de la section `[ req_distinguished_name ]` du fichier `openssl.cnf`, notamment :
+ * `countryName_default`
+ * `stateOrProvinceName_default`
+ * `localityName_default`
+ * `0.organizationName_default`
+ * `emailAddress_default`
+* Exécuter :
+
+ # 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` des futurs certificats créés (ex : `vpn.example.com`)
+
+
+## Permettre aux clients de conserver la même IP au fil de connexions
+
+Le fichier ipp.txt contient une liste des clients et de leur adresse IP afin qu'en cas de redémarrage du serveur,
+ils conservent la même adresse.
+Ce fichier peut être utilisé afin de rendre persistantes les IPs attribuées aux clients.
+
+Dans le server.conf ou server.ovpn :
+
+ ifconfig-pool-persist /etc/openvpn/ipp.txt 0
+
+
+Cela rend le fichier _ipp.txt_ en lecture seule pour OpenVPN.
+Il faudra donc ajouter une nouvelle ligne de la forme CN,IP à chaque ajout d'un nouveau client.
+
+## Créer les paramètres pour un nouveau client VPN
+
+* Exécuter :
+
+
+ # cd /etc/openvpn/ssl
+ # sh shellpki.sh create
+
+
+* Choisir un CN unique pour la machine (ex : `client1.vpn.example.com`)
+
+* Récupérer le certificat et la clé dans `/var/www/htdocs/vpn/ssl`
+
+* Dans la conf client, rajouter la directive _nobind_. Par défaut le client se bind sur l'ip locale et le port 1194, _nobind_ force l'utilisation d'un port aléatoire.
+
+## Renouveller le certificat principal du VPN
+
+Si le certificat indiqué au niveau de la configuration OpenVPN expire lui-même :
+
+
+ cert /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.crt
+ key /etc/openvpn/ssl/files/fw.vpn.example.com-1278421834/fw.vpn.example.com.key
+
+
+Il faut le révoquer, puis en recréer un :
+
+
+ # cd /etc/openvpn/ssl
+ # sh shellpki.sh revoke
+ # sh shellpki.sh create
+ # cp /etc/openvpn/ssl/crl.pem /var/empty/
+
+
+Enfin, on ajuste les lignes dans la configuration OpenVPN et on relance le daemon.
+
+
+## Configuration inline pour client OpenVPN
+
+Pour simplifier la configuration pour les utilisateurs finaux on peut générer un fichier de configuration embarquant les certificats :
+
+ client
+ dev tap0
+ tls-client
+ proto udp
+ #comp-lzo
+ #ns-cert-type server
+
+ tls-client
+ remote vpn.example.com 1194
+
+ persist-key
+ persist-tun
+ pull
+
+ cipher AES-128-CBC
+
+
+ -----BEGIN CERTIFICATE-----
+ […]
+ -----END CERTIFICATE-----
+
+
+
+ Certificate:
+ Data:
+ […]
+ -----END CERTIFICATE-----
+
+
+
+ -----BEGIN RSA PRIVATE KEY-----
+ […]
+ -----END RSA PRIVATE KEY-----
+
+
+
+
+## Client OpenVPN sous Mac OS X
+
+Télécharger la dernière version stable de Tunnelblick sur http://code.google.com/p/tunnelblick/
+
+On suit les instructions d'installation (en anglais), puis :
+* On choisit de générer la configuration (indiquer qu'on n'a pas de fichiers de configuration)
+* Cela génère une configuration standard, notamment un dossier sur le bureau avec un fichier _config.ovpn_
+* On édite le _config.ovpn_ en ajustant les options _remote_, _ca_, _cert_ et _key_.
+* On copie également clé et certificatS dans ce dossier
+* On doit ensuite renommer ce dossier avec un nom se terminant par .tblk
+* On double-clic ensuite dessus, et cela installe configuration
+* On peut ensuite lancer le VPN via l'icone présente, puis choisir diverses options (connexion automatique, etc.)
+
+
+## Client OpenVPN sous Android
+
+On utilise l'application libre "OpenVPN for Android" disponible sur [Google Play](https://play.google.com/store/apps/details?id=de.blinkt.openvpn) et [F-Droid](https://f-droid.org/repository/browse/?fdfilter=openvpn&fdid=de.blinkt.openvpn)
+qui ne nécessite pas de droits "root" avec Android 4 ou supérieur.
+
+La configuration d'un VPN nécessite les informations suivantes :
+* le certificat CA peut être importé sous format PEM
+* le certificat client doit être au format PKCS#12 (fichier .p12 ou .pfx), on pourra ainsi le créer à partir de la clé/certificat :
+
+ $ openssl pkcs12 -export -in goyk3OkjeuPread8Sluld.privacy.evolix.org.crt -inkey goyk3OkjeuPread8Sluld.privacy.evolix.org.key -out goyk3OkjeuPread8Sluld.privacy.evolix.org.p12
+
+* décocher "Compression LZO" si ce n'est pas supporté par votre serveur
+* décocher "Vérification du certificat de l'hôte" (sinon cela ne fonctionne pas a priori…)
+* forcer "Algorithme de chiffrement" à AES-128-CBC (à ajuster selon votre serveur)
+
+
+## How to OpenVPN niveau 2
+
+Dans l'exemple qui suit le serveur VPN est sur une machine sous Debian et le client sur une machine sous OpenBSD
+
+Voici le fichier _/etc/openvpn/server.conf_ sous Debian :
+
+ port 1194
+ proto udp
+ dev tap0
+ server-bridge
+ keepalive 10 120
+
+ ;tls-auth ta.key 0 # This file is secret
+ ;cipher BF-CBC # Blowfish (default)
+ ;cipher AES-128-CBC # AES
+ ;cipher DES-EDE3-CBC # Triple-DES
+
+ comp-lzo
+
+ ;max-clients 100
+ ;user nobody
+ ;group nobody
+
+ persist-key
+ persist-tun
+
+ ca /etc/openvpn/ssl/ca/cacert.pem
+ cert /etc/openvpn/ssl/files/serveur/serveur.crt
+ key /etc/openvpn/ssl/files/serveur/serveur.key
+ dh /etc/openvpn/ssl/ca/dh2048.pem
+
+ status /var/log/openvpn-status.log
+ log /var/log/openvpn.log
+ verb 3
+
+
+Voici le fichier de configuration client sous OpenBSD :
+
+ client
+ proto udp
+ dev tun0
+ dev-type tap
+ verb 4
+
+ tls-client
+ remote 1.2.3.4 1194
+
+ user _openvpn
+ group _openvpn
+ chroot /var/empty
+
+ persist-key
+ persist-tun
+ pull
+
+ status /var/log/openvpn-status.log
+
+ comp-lzo
+ #verb 3
+ #cipher AES-128-CBC
+
+ ca /etc/openvpn/ssl/files/client/client.pem
+ cert /etc/openvpn/ssl/files/client/client.crt
+ key /etc/openvpn/ssl/files/client/client.key
+
+
+
+## FAQ
+
+### Erreur "--crl-verify fails" (constaté sur un serveur OpenVPN sous OpenBSD)
+
+
+ Options error: --crl-verify fails with 'crl.pem': No such file or directory
+ Options error: Please correct these errors.
+
+
+Il faut parfois regénérer un fichier CRL.
+
+Si l'on utilise une version récente de [shellpki](https://forge.evolix.org/projects/shellpki) :
+
+
+ # cd /tmp
+ # shellpki.sh crl
+ # cp crl.pem /var/empty
+
+
+
+### Erreur "ROUTE: route addition failed using createipforwardentry" (constaté sur un client OpenVPN sous Windows)
+
+En cas d'erreur _ROUTE: route addition failed using createipforwardentry_, l'utilisateur n'a pas les droits suffisants pour ajouter une nouvelle route.
+Il faut essayer d'exécuter les logiciels (_openvpn.exe_ et _openvpngui.exe_) dans un mode de compatibilité _lancer en Administrateur_. Pour plus de détails,voir http://www.bolehvpn.net/forum/index.php?topic=1746.0
+
+### Erreur "no more TUN/TAP adapter" (constaté sur un client OpenVPN sous Windows)
+
+En cas d'erreur _no more TUN/TAP adapter_ aller dans _menu démarrer_> _OpenVPN_> _Add new TUN/TAP Adapter_
+
+### Erreur "Authentificate/Decrypt packet error: cipher final failed" (constaté sur un client OpenVPN sous Android)
+
+Cela signifie que l'algorithme de chiffrement n'est pas synchronisé entre le client et le serveur.
+Il faut donc ajuster la directive "cipher" sur le client.
+
+### Erreur "Bad LZO decompression header byte" (constaté sur un client OpenVPN sous Android)
+
+Cela signifie que la compression LZO n'est pas activée sur le serveur, il faut donc désactiver la compression au niveau du client.