Dépôt Mercurial sur CentOs, Part 1: SSL
Lassé d'utiliser SVN de part plusieurs points j'ai décidé de donner sa chance à Mercurial.
Comme SVN, Mercurial est un système de gestion de versions mais ayant pour avantage la décentralisation des données (dans la même lignée on retrouve aussi GIT).
Introduction
Différents éléments m'ont amené à tenter l'expérience Mercurial :J'étais désespéré de voir des .svn dans chacun des répertoires de mes projets. Par exemple envoyer son projet 'propre' à quelqu'un nécessitait un peu de bidouille. Avec Mercurial il n'y a qu'un répertoire .hg et pas plus !
Une gestion centralisée/décentralisée est possible, on peut ainsi 'commiter' sur sa propre machine avant de tout envoyer au serveur principal. Très pratique pour sauvegarder une petite mise à jour que l'on ne trouve pas assez 'conséquente' pour un upload sur le serveur. Mais aussi en cas d'absence d'Internet ! On peut ainsi committer quand on veut et où l'on veut !
De plus je trouve la structure générale de Mercurial moins chaotique à mes yeux (J'ai l'impression qu'une installation d'un dépôt SVN met des morceaux un peu partout, ça n'engage que moi).
Install Time !
Le point qui sera abordé dans ce billet est la mise en place du SSL afin de 'protéger' nos différents envois au serveur. Nous allons voir ici comment créer son certificat et le faire signer par une Autorité de Certification externe.
Clé Privée et CSR
La première étape consiste à se créer une Clé privée ainsi qu'un Certificate Signing Request (Demande de signature de certificat).
La clé sera à conserver très précieusement et ne doit pas être communiquée. Le CSR sera fourni à l'Autorité de Certification qui nous donnera un beau certificat signé !
La création de ces fichiers se fait très simplement :
Note : Personnellement je remplace le 'serveur' par le nom du domaine qui détiendra le certificat.
openssl req -nodes -newkey rsa:2048 -keyout serveur.key -out serveur.csr
Différentes informations vont nous être demandées :
Note : Les trois derniers champs sont optionnels.
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: .
Locality Name (eg, city) []: Nancy
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Pulsar
Organizational Unit Name (eg, section) []: IT
Common Name (eg, YOUR name) []: serveur.fr
Email Address []:
A challenge password []:
An optional company name []:
Note 2: Le Common Name doit être le nom du domaine à protéger
On obtient désormais nos deux fichiers : serveur.key et serveur.csr !
Il faut maintenant fournir le fichier csr à une Autorité de Certification (dans mon cas Gandi) pour que celui-ci nous fournisse un certificat.
Pour ceux ne souhaitant pas débourser de sousous, le site www.cacert.org signe des certificats gratuitement.
Une fois que l'Autorité de Certification nous fournit le certificat on se retrouve donc avec :
- serveur.key => la clé privée
- serveur.csr => la demande de signature de certificat
- serveur.crt => le certificat signé
On notera que serveur.key et serveur.csr sont dans le répertoire private afin de les séparer du certificat publique.
mv serveur.crt /etc/pki/tls/certs
mv serveur.key /etc/pki/tls/private/serveur.key
mv serveur.csr /etc/pki/tls/private/serveur.csr
Httpd
Il nous faut désormais installer le module SSL pour Httpd :
Configurons maintenant Httpd pour prendre en compte nos fichiers créés. Pour cela ouvrez le fichier /etc/httpd/conf.d/ssl.conf avec votre éditeur favoris !
yum install mod_ssl
Recherchez et changez les champs en fonctions du nom de vos fichiers :
Sauvegardez et relancez Httpd :
SSLCertificateFile /etc/pki/tls/certs/serveur.crt
SSLCertificateKeyFile /etc/pki/tls/private/serveur.key
Tentez d'accéder à votre site via https://serveur pour vérifier le bon fonctionnement des manipulations !
service httpd restart
Dans le prochain épisode
Nous attaquerons la mise en place du dépôt !