Accueil du site > Système > Apache SSL/TLS Mini HOWTO
Apache SSL/TLS Mini HOWTO

Introduction

J’ai récemment eu à mettre en place un système d’identification par certificats pour une application web qui permet aux clients d’une des sociétés pour lesquelles je travaille de venir consulter le ou les contrats d’entretien qu’elles ont signé [1] et le retour des interventions qui leur ont été prestées afin qu’elles aient un moyen de suivi de ces dernières. Etant donné le caractère confidentiel des données diffusées sur internet, il est important de garantir une sécurité lors de la mise à disposition des informations afin que personne d’extérieur aux sociétés concernées ne puisse consulter les données, ni qu’une société puisse puisse consulter les informations d’une autre. Bref, j’ai décidé de mettre en place un mécanisme d’autentification des clients par certificat afin de garantir la non-divulgabilité des informations.

J’ai donc mis au point cette solution sur un serveur Gentoo Linux avec apache 2.

Les objectifs à remplir pour ce petit projet sont donc :

  • Utiliser une encryption SSL/TLS de haut ou moyen niveau au niveau transport (TCP)
  • Le navigateur du client doit utiliser SSLv3 ou TLSv1, mais pas SSLv2
  • Demander un nom d’utilisateur et mot de passe pour certains sous-répertoires
  • Apprendre à utiliser les certificats TLS
  • Créer des certificats pour les clients et les demander pour certains répertoires

Note :

Ce document assume que vous utilisez une version de Linux [2], d’Apache 2.0.xx et d’OpenSSL. Autres présomptions :
  • Ce système sera utilisé sur Internet [3]
  • Votre configuration DNS est correcte. (hostname=FQDN, enregistrements PTR corrects, etc)
  • Vous avez une seconde machine avec un browser moderne pour réaliser des tests
pages : 1 2 3 4 5 6 7 8 9 10 11 >>

[1] A savoir pour la petite histoire que c’est une société qui propose des contrats d’entretien pour les systèmes de chauffage/climatisation/ventilation
[2] Il convient donc d’adapter quelque peu les commandes à suivre en fonction de votre distribution
[3] Malgré le fait qu’il puisse également être utilisé sur l’intranet, mais quel intérêt ?

Post Scriptum Recommendation : vous _devez_ faire des copies PAPIER (cad imprimer) des clefs et les certificats ainsi que les mots de passe et sauvegardez les dans un endroit sûr.
Commentaires :
Apache SSL/TLS Mini HOWTO

Bonjour,

Tout d’abord, merci beaucoup pour ce didacticiel tr ?s clair.

J’ai tout de m ?me une question ? poser.

Je vois que vous proposer de g ?n ?rer vos cl ?es RSA encod ?e sur 2048 bits. Pourtant d’apr ?s ce lien de la documentation Apache qui suit :

http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#keysize

Seule les cl ?s RSA cod ?es sur 512 ou 1024 bit sont support ?es.

Il est vrai qu’en suivant votre didacticiel je n’ai pas pu faire fonctionner mes certificats et cl ?s sur un Solaris 10 (mais sous windows oui). J’ai alors suivi un autre didacticiel qui m’a plus r ?ussi mais il pr ?cisait de coder les cl ?s sur 1024 bits. Mais d ?sormais je n’ai plus le choix je dois utiliser des cl ?s en 2048 bits.

Votre site n’est pas la premi ?re source qui me fait douter du cot ? d ?finitif de cette limitation.

Mes questions sont les suivantes :

Est-ce v ?ridic qu’Apache ne support pas les cl ?s encod ?es en plus de 1024 bit ? Ou bien est-ce un param ?tre d’Apache qui peut ?tre modifi ? dans la configuration ou ? la compilation ?

P.S. : Pour moi la version d’Apache ? utiliser pour que ?a fonctionne n’a pas d’importance.

Bien ? vous,

Dimbidim


Posté par Dimbidim Site : Apache SSL/TLS Mini HOWTO
Répondre à ce commentaire
Apache SSL/TLS Mini HOWTO

bonjour,

dans cet article, il est clairement ecrit page 3 que la clef privee pour les serveurs web doit etre de 512 ou 1024bits. en l’occurence, la clef qui fait 2048bits dans mon didacticiel est la clef privee pour mon CA.

en esperant avoir repondu a votre demande.

Benjamin


Posté par b3nj Site :
Répondre à ce commentaire
Apache SSL/TLS Mini HOWTO

Moi qui cherche à piger et à mettre en place un mod_ssl, je le trouve très accessible ce HOWTO et très compréhensible. Enfin un et en plus en français !

Par contre, au vu du fichier de configuration, j’ai l’impression qu’il manque une partie explicative si je me réfère à ces lignes :

SSLCertificateFile conf/ssl/server.crt

SSLCertificateKeyFile conf/ssl/server.key

Je dois avouer que ça m’aurait bien aidé à piger l’essentiel... ;)


Posté par lolito Site :
Répondre à ce commentaire
Apache SSL/TLS Mini HOWTO

Merci pour ce commentaire chaleureux, ça fait plaisir.

Pour vous éclaircir un peu les idées :
* SSLCertificateKeyFile est la clef privée qui vous aura permis de générer votre requete de certificat (csr)
* SSLCertificateFile est le certificat final, la résultante de la signature par l’entité de certification (suivant l’article votre propre entité de certification, mais cela pourrait très bien en être une autre) de votre requête de certificat (csr)


Posté par b3nj Site :
Répondre à ce commentaire
Apache SSL/TLS Mini HOWTO

Bonjour, Un grand merci pour ce tutoriel trés clair.

J’ai juste une question : Si on utilise uniquement l’authentification par certificat, comment gérer le rejet des certificats pour les utilisateurs qui se sont désabonnés ou que l’on veut bannir ?

Encore Merci.


Posté par Helmer Fud Site :
Répondre à ce commentaire
Apache SSL/TLS Mini HOWTO

Bonjour et merci pour cette question pertinente.

Pour révoquer un certificat, il suffit d’utiliser la commande suivante :

openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt

Ceci mettra a jour automatiquement la base de données index.txt configurée dans votre fichier de configuration openssl.

(les raisons de la révocation peuvent être spécifiées au moyen de l’option -crl_reason suivi de la raison parmi les suivantes : unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold, removeFromCRL)

Puis, il est nécessaire de (re-)générer un fichier CRL (pour certificate revocation list) qui contiendra la liste des certificats révoqués.

openssl ca -gencrl -keyfile ca_key -cert ca_crt -out my_crl.pem

Puis il est nécessaire de spécifier dans le vhost apache la directive SSLCARevocationFile de la façon suivante :

SSLCARevocationFile /chemin/vers/my_crl.pem

De cette façon, apache vérifiera la validité du certificat utilisé pour l’authentification.


Posté par b3nj Site :
Répondre à ce commentaire
Poster un message