Let’s encrypt ou la signature OpenSource de certificats

Vouloir passer ses domaines en https : c’est bien.
Mais comment gérer la signature des certificats ?
Car s’il est possible de générer ses propres certificats, il est aussi possible de créer sa propre autorité de certification pour les signer ou de faire appel à un prestataire.
Le premier cas de figure, avoir sa propre autorité de certification :
c’est facile, rapide et gratuit.
Le problème est qu’elle n’est reconnue que par vous, donc lors de la consultation du-dit site, il faut soit ajouter une exception soit ajouter le certificat de l’autorité au navigateur qui ne la connaissait pas. Ce qui n’est pas des plus pratique et peut faire peur à vos visiteurs.
La deuxième solution, faire appel à un prestataire :
c’est plus pratique, car il sera connu par tous les navigateurs ; en revanche c’est loin d’être gratuit.

Alors quelle est la solution ?

Une des solutions est let’s encrypt, il s’agit d’une autorité de certification open source et gratuite !

Préparation

Il existe un programme qui fait tout le travail, de façon automatisée : CertBot.
Il suffit de suivre le processus d’installation, très simple.

Utilisation

Idem, ce référer au lien précédent.

Mise en place d’un Serveur Ubuntu 16.04 LTS

Voici une série de procédures permettant de mettre en production un serveur sous la distribution Ubuntu Server 16.04.
Tout a été testé plutôt deux fois qu’une !

La préparation du système

Le serveur SSH

Les certificats

LAMP

Fail2ban

NTP Serveur

Serveur/LAMP

Installation

sudo apt-get install apache2 php mysql-server libapache2-mod-php php-mysql

Durant l’installation, un mot de passe sera demandé pour mysql.

Configuration

Activation du https via TLS

#Activation du module ssl
sudo a2enmod ssl
#Activation du virtual host https
sudo a2ensite default-ssl.conf
#Redémarrage du service apache2
sudo service apache2 restart

Continue reading

Certificats

Pour sécuriser une connexion web en utilisant le protocole https, il faut un certificat.
Nous allons voir comment les générer sans trop de fatigue !

Recommandations

L’ANSSI déconseille fortement de générer des certificats sur un serveur fraîchement installé ou pire sur une machine virtuelle, car il n’y a pas suffisamment d’entropie. cf p8/21 Anssi – Note technique Recommandations pour un usage sécurisé d’OpenSSH

Quelques règles permettent de s’assurer que le réservoir d’entropie est correctement rempli :

  • la machine de génération de clés doit être une machine physique ;
  • elle doit disposer de plusieurs sources d’entropie indépendantes ;
  • l’aléa ne doit être obtenu qu’après une période d’activité suffisamment importante (plusieurs minutes voire heures).

Il parait donc nécessaire de générer les clefs et certificats sur son poste de travail, qui a de nombreuses applications en service, générant de l’entropie.

L’autorité de certification

Il est possible de faire signer ses certificats par une autorité de certification, qui vous facturera l’opération.

Sinon il est possible de créer sa propre autorité de certification.
Continue reading

Ubuntu Serveur 16.04/php7

Après avoir installé la nouvelle version d’Ubuntu Serveur : 16.04, j’ai eu la mauvaise surprise de constater que les pages retournées par le serveur apache2 n’avait pas le code php d’interprété.
Les paquets relatifs à php7 avaient bien étaient installés par le système, php7.0, libapache2-mod-php7.0.

J’ai fini par trouver une solution, il faut éditer le fichier du virtual host

sudo vi /etc/apache2/sites-available/000-default.conf

et d’ajouter la ligne :

AddType application/x-httpd-php .php

Serveur/OpenStreetMap sous Ubuntu 14.04

Pour certains besoins, il est parfois nécessaire de mettre en place son propre serveur OpenStreetMap, comme par exemple pour des applications métiers, afin d’avoir le serveur en local, ne pas surcharger les serveurs OSM publiques, réduire le temps de latence, travailler sur des emprises définies (continent, pays, région, et même zone personnalisée).
Mon serveur étant sous ubuntu server, je ne m’intéresserai ici qu’à ce cas de figure, mais il y a fort à parier que les paquets soient accessibles sous d’autres distributions.

Présentation

Le but est de mettre en place un architecture permettant d’intégrer les exports d’OSM (dumps & diffs), afin de fournir un service de cartographie.
Le service devra mettre à disposition de leaflet des tuiles cartographiques.

Voici le schéma complet de l’infrastructure d’OpenStreetMap :

Schéma Infrastructure OSM
Les principaux services nécessaires sont les suivants :
Osmosis permet la gestion des données, import/export/comparaison des dumps et diffs des données OSM.
Osm2pgsql permet la conversion des données OSM afin de les importer dans la base PostgreSQL.
Mapnik permet de faire le rendu des tuiles en utilisant des styles personnalisables.
Mod_tile effectue la gestion des tuiles et du cache. Si elle existe et est à jour, il la sert au serveur web, si elle est obsolète ou n’existe pas, il va la demander à Mapnik.
Renderd gère la priorisation des demandes de tuiles de Mod_tile à Mapnik en prenant en compte la charge serveur.

OSM Bright permet de gérer les styles des cartes.

Recommandations matérielles

Pour un rendu important, comme au niveau planète, il faut prévoir une infrastructure matérielle conséquente :

  • au moins 24 GB de RAM,
  • avoir la DB sur des disques SSD,
  • 512 GB d’espace disque si les données OSM sont mises à jour,
  • 256 GB d’espace disque si les données OSM ne sont pas mises à jour, mais réimportées via l’option -drop,
  • Concernant le processeur, je n’ai pas trouvé d’info.

Ceci sans faire allusion au RAID et besoins de sauvegardes.

Installations

Les commandes sont données pour un système avec ubuntu server 14.04

Installation des dépendances

sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont lua5.1 liblua5.1-dev node-carto

 

Installation de PostgreSQL & PostGIS

sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1

 

Installation d’osm2pgsql

mkdir ~/src
cd ~/src
git clone git://github.com/openstreetmap/osm2pgsql.git
cd osm2pgsql
./autogen.sh
./configure
make
sudo make install

 

Installation de Mapnik

cd ~/src
git clone git://github.com/mapnik/mapnik
cd mapnik
git branch 2.2 origin/2.2.x
git checkout 2.2

python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/
make
sudo make install
sudo ldconfig

 

Installation de mod_tile & renderd

cd ~/src
git clone git://github.com/openstreetmap/mod_tile.git
cd mod_tile
./autogen.sh
./configure
make
sudo make install
sudo make install-mod_tile
sudo ldconfig

 

Notes

Si les mises à jour de la base de données ne sont pas très fréquentes (<2/mois), il semble préférable d’utiliser le dump complet plutôt que les diffs.

Téléchargements:
Planet OSM – Pour télécharger les données au niveau global
Geofabrik – Pour télécharger les données au niveau désiré (Continent, Pays, Région)
Dernier fichier OSM – France (3 GB)
 
Sources :
Switch2OSM.org
Pages persos d’Adrien/Créer son propre miroir des données OpenStreetMap et un serveur de rendu des tuiles, avec Debian Wheezy
Makina Corpus/Un serveur OpenStreetMap pour votre ville
Wiki OSM/Automatiser la mise à jour quotidienne