The ZATAZ network :: ZATAZ.com :: ZATAZ.net


Documentation : Partie serveur de IRC SSL certifié

Date de publication : 18.7.2004
Date de modification : 17.2.2005

Contributeur : Eric Romang

Société : ZATAZ / http://eromang.zataz.com

Eric Romang co-fondateur de ZATAZ, avec Damien Bancal, supervise la direction technique de ZATAZ.

Situé au Luxembourg, Eric Romang a eu l'occasion au cours de ses années d'expériences dans le domaine au sein de datacenter de développer une expertise dans la haute disponibilité d'infrastructure, la mise en place de cluster MySQL, de solutions de stockages, de sauvegardes et de sécurisation d'environnement Linux.


But du document

Le but de ce document est de mettre en place l'interface serveur du projet IRC SSL.

Pré-requis

Un serveur sous Linux
OpenSSL, Stunnel, IRCD

Mise en condition :

Premièrement nous allons créer l'autorité de certification qui nous permettra de valider les demandes de certificats.

Deuxièmement, nous allons validé ou non une demande de certificat.

Enfin, nous allons mettre en place un tunneling ssl, avec le logiciel stunnel, pour authentifié les certificats et crypté toutes les communications.

Ci-dessous un petit descriptif de la procédure utilisé pour le tunneling irc.

Création de l'autorité de certification sous linux

Pour pouvoir certifié des certificats, il vous faut tout d'abord créer une autorité de certification.

Pour cela, nous allons utiliser CA.pl écris par Steve Hanson et fournis avec OpenSSL.

Créer tout d'abord un dossier dans lequel vous aller traiter l'autorité de certification.

shell > mkdir /usr/local/ircssl

Rendez-vous dans ce dossier

shell > cd /usr/local/ircssl

Pour créer un l'autorité de certification, il vous suffit de lancer :

shell > /usr/local/ssl/misc/CA.pl -newca

Information tirée du man CA.pl(1)

CA.pl est un script qui permet d'utiliser les commandes communes de openssl.
Sa création a été effectuée pour simplifier la création de certificats et leurs gestions.
L'option -newca vous permet de créer une nouvelle hierarchie CA.

CA certificate filename (or enter to create)

Taper sur entrée

Making CA certificate ...
Using configuration from /usr/ssl/openssl.cnf
Generating a 1024 bit RSA private key
...........................++++++
............................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:


Comme on peut le voir, la demande de création d'une autorité de certificat va créer un clé privée, qui a comme paramètre de configuration par défault openssl.cnf, une clé RSA de 1024 bit et qui sont déposé dans le répertoire demoCA.

Entrer le mot de passe que vous choisissez pour votre clé privé d'autorité de certificat.

Verifying password - Enter PEM pass phrase:

Retaper le mot de passe choisit pour confirmer

-----
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]:


Entrer le code du pays dans lequel vous résidez.
Pour moi le Luxembourg, donc LU

State or Province Name (full name) [Some-State]:

Nom de l'Etat ou de la province ou vous résidez.
Pour moi Luxembourg :)

Locality Name (eg, city) []:

Nom de la ville dans laquelle vous résidez.
Toujours Luxembourg ;)

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Nom de l'organisation pour laquelle vous voulez créer cette clé privée.
Ici ZATAZ.net

Organizational Unit Name (eg, section) []:

Nom du département dans lequel vous travaillez.
ZATAZssl

Common Name (eg, YOUR name) []:

Votre nom ou nickname
Ici wow

Email Address []:

Votre adresse email
Ici wow@zataz.net

Vous voilà avec maitenant un répertoire demoCA dans le répertoire ircssl

drwxr-xr-x 6 root root 4096 Feb 18 01:20 demoCA

Ce répertoire contient ces fichiers suivants :

-rw-r--r-- 1 root root 1285 Feb 18 01:20 cacert.pem
drwxr-xr-x 2 root root 4096 Feb 18 01:16 certs
drwxr-xr-x 2 root root 4096 Feb 18 01:16 crl
-rw-r--r-- 1 root root 0 Feb 18 01:16 index.txt
drwxr-xr-x 2 root root 4096 Feb 18 01:16 newcerts
drwxr-xr-x 2 root root 4096 Feb 18 01:16 private
-rw-r--r-- 1 root root 3 Feb 18 01:16 serial


Créer un répertoire pour tous les certificats acceptés.

shell > mkdir accepted_certs

Et voila le tour est joué, il vous faut maitenant attendre les demandes de certificats pour les approuvés ou les rejeter.

Validation d'une demande de certificat

Lors d'une demande de certificat, vous devez recevoir un fichier du type newreq.pem dont le contenu devrait ressembler à cela :

-----BEGIN CERTIFICATE REQUEST-----
MIIB0TCCAToCAQAwgZAxCzAJBgNVBAYTAkxVMRMwEQYDVQQIEwpMdXhlbWJvdXJn
MRMwEQYDVQQHEwpMdXhlbWJvdXJnMRIwEAYDVQQKEwlaYXRhei5uZXQxEzARBgNV
BAsTCnRlc3Qgc3RhZmYxDjAMBgNVBAMTBXdPdzJrMR4wHAYJKoZIhvcNAQkBFg93
b3cya0B6YXRhei5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK7Sz6im
0wpZr693zY1+NIjdBXCB3dsisqgbIfw2915yvyq9edHVxguDEGSWOFID4p8aWW/f
4xuy9Ro/e9Vxg9jINrzddfdfdfdfdfdfdPHm4RB37kkoJ3DZB+PpEru+HkUlLVJ/
cXdsjypIkUz69GCwEj/kccfV1/6xkgCKxfyxAgMBAAGgADANBgkqhkiG9w0BAQQF
AAOBgQCStGhnw3ZosXXDUWRd4NZTxtkmX3S6PnUPKD4UWjVma1DtZAzqhsoRHTsc
uWPE2ET8iNHUmxCd2ucCyXnPE5T2588EsKBYEzdcGXznxS1aAbcdBTY9w0KBlfZU
HgCOVZ+HNKgAu3LmTHiklU64gt7dGZ/EJiEBo8omawin4ZOqjg==
-----END CERTIFICATE REQUEST-----


déposer ce fichier dans le répertoire ircssl

Pour le valider, si tel est votre intention, exécuter la commande suivante :

shell > /usr/local/ssl/misc/CA.pl -sign

L'option -sign vous permet de signer un certificat.

Using configuration from /usr/ssl/openssl.cnf
Enter PEM pass phrase:


Entrer votre mot de passe de certificateur.

Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'LU'
stateOrProvinceName :PRINTABLE:'Luxembourg'
localityName :PRINTABLE:'Luxembourg'
organizationName :PRINTABLE:'ZATAZ.net'
organizationalUnitName:PRINTABLE:'ZATAZssl'
commonName :PRINTABLE:'wow'
emailAddress :IA5STRING:'wow@zataz.net'
Certificate is to be certified until Feb 18 00:46:50 2003 GMT (365 days)
Sign the certificate? [y/n]:


Valider oui ou non la demande de certificat.

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem


Vous voila donc avec un nouveau certificat newcert.pem que vous allez pouvoir retourner à l'utilisateur.

Maintenant vous allez pouvoir hasher le certificat pour l'intégrer au certificat autoriser à se connecter.

Taper la commande ci-dessous.

shell > openssl x509 -hash -noout -in newcert.pem

L'option -hash permet de sortir le hash du certificat.
Ceci est utilisé par OpenSSL pour indexer les certificats dans un répertoire.

La sortie sera par exemple :

b6ebe1c3

Copier le nouveau certificat newcert.pem dans le répertoire demoCA/accepted_certs/ avec le nom du hash

shell > cp newcert.pem demoCA/accepted_certs/b6ebe1c3.0

Retourner le certificat certifié de votre part à l'utilisateur concerné.

Mise en place de stunnel avec certification pour accès IRC SSL

Lancer le serveur IRC sur le port 6667, qui n'est pas accessible de l'extérieur.

Ouvrer un port quelconque, genre 7648, pour permetre la connexion extérieur.

Lancer la connexion stunnel de la façon ci-dessous :

shell > stunnel -v 3 -A /usr/local/ircssl/demoCA/cacert.pem -a /usr/local/ircssl/demoCA/accepted_certs -p /etc/stunnel/stunnel.pem -P /tmp/ -d 7648 -r 6667

Et voilà le tour est joué ;)


Lien(s) Associé(s) :


contentRight


valider