Dépôt Mercurial sur CentOs, Part 1: SSL

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 :

openssl req -nodes -newkey rsa:2048 -keyout serveur.key -out serveur.csr

Note : Personnellement je remplace le ‘serveur’ par le nom du domaine qui détiendra le certificat. Différentes informations vont nous être demandées :

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 : Les trois derniers champs sont optionnels.
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é
      Nous allons maintenant copier ces fichiers aux bons endroits :

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

On notera que serveur.key et serveur.csr sont dans le répertoire private afin de les séparer du certificat publique.

Httpd

Il nous faut désormais installer le module SSL pour Httpd :

yum install mod_ssl

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 !
Recherchez et changez les champs en fonctions du nom de vos fichiers :

SSLCertificateFile /etc/pki/tls/certs/serveur.crt
SSLCertificateKeyFile /etc/pki/tls/private/serveur.key

Sauvegardez et relancez Httpd :

service httpd restart

Tentez d’accéder à votre site via https://serveur pour vérifier le bon fonctionnement des manipulations !

Dans le prochain épisode
Nous attaquerons la mise en place du dépôt !