1. Par Achraf SFAXI Page 1
Apache Server :
Configuration & Sécurisation
sous Linux
2. Par Achraf SFAXI Page 2
Unit 1
Introduction et configuration de
base de Apache
3. Par Achraf SFAXI Page 3
base de Apache
Unit 1
Introduction et configuration de
4. Par Achraf SFAXI Page 4
Unit 1 : Plan
° Internet : Architecture
° HTTP : architecture et fonctionnement
° Apache : utilisation, installation et activation sous
RedHat linux
° Les fichiers de configuration de base et contrôle du
démon
5. Par Achraf SFAXI Page 5
Internet : la topologie client/serveur
° WWW : Système d’information hyper-média réparti :
texte, images, images animées, son …
° Les informations sont stockées sur les serveurs
accessibles par des URL:
– www.redhat.com
– www.linux.com.tn
° Pour interroger les serveurs on utilise les clients tels que
: Netscape, Mozilla, Konqueror, Balsa,...
6. Par Achraf SFAXI Page 6
Internet : la topologie client/serveur
(2)
° Modèle client-serveur
° Le client envoie des requêtes au serveur pour :
– transfert de fichiers
– exécution de programmes sur le serveur
– mise à jour de fichier
– …
° Utilisation du protocole HTTP
° Objets manipulés repérés par leurs URL/URI
° Pas de session permanente entre client/serveur
7. Par Achraf SFAXI Page 7
Les transactions Web(1)
° Les clients WWW émettent surtout des requêtes GET
pour accéder à des documents stockés sur un serveur
Web, puis les affichent.
° Ils peuvent aussi travailler dans l'autre sens :
transmission de paramètres au serveur HTTP qui activera
ensuite un programme utile pour :
– traitement de formulaire
– images réactives
– fourniture de mot-clé pour moteur de recherche
– page dynamique ...
8. Par Achraf SFAXI Page 8
Les transactions Web(2)
Serveur Web Serveur Web
(apache) (IIS)
Protocole HTTPProtocole HTTP
Client
(mozilla,...)
9. Par Achraf SFAXI Page 9
HTTP : protocole de communication
° Définit le langage utilisé pour les échanges entre client et
serveur Web.
° Actuellement la version 1.1 est une proposition de
standard de l'IETF : RFC 2616 (1999).
10. Par Achraf SFAXI Page 10
HTTP : la connexion
• Ouverture par le client : adresse IP et port, 80 par défaut.
• Envoi de la requête au serveur :
entêtes de requête (méthode à utiliser pour la transaction et
autres informations), données éventuelles
• Envoi de la réponse par le serveur :
entêtes de réponse (statut de la transaction, type de
données envoyées), données
• Fermeture de la connexion : aucune mémoire de la
transaction (protocole sans état)
11. Par Achraf SFAXI Page 11
HTTP : les méthodes
° GET URI HTTP/version
rapatrier le contenu de la ressource d'adresse URI
° HEAD URI HTTP/version
rapatrier les caractéristiques de la ressource d'adresse
URI
° POST URI HTTP/version
transmettre les données d'un formulaire au CGI indiqué
par l'URI
12. Par Achraf SFAXI Page 12
HTTP : les méthodes(2)
° PUT URI HTTP/version
transmettre les données à l'adresse URI (remplacement
ou création)
° DELETE URI HTTP/version
effacer la ressource d'adresse URI
° OPTIONS URI HTTP/version
renvoie les options applicables à la ressouurce d'adresse
URI
° TRACE URI HTTP/version
permet de tracer le passage par les proxies ...
13. Par Achraf SFAXI Page 13
HTTP : les champs d'en-tête
° Côté client
– User-Agent: programme/version commentaire
– Host: hôte [: port]
– Accept: type/sous-type
– Referer: URL
– If-Modified-Since: date
– Accept-Encoding: codage
– Accept-Language: langue
– Authorization: schéma données_codées
– Range: bytes=début-fin
14. Par Achraf SFAXI Page 14
HTTP : les champs d'en-tête (2)
° Côté serveur
– Allow: type/sous-type
– Content-Encoding: codage
– Content-Length: longueur
– Content-Type: type/sous-type [charset=jeu]
– Content-Range: bytes début-fin/total
– Date: date
– Last-Modified: date
– Retry-After: date | secondes
– Server: programme/version commentaire
– WWW-Authenticate: schéma realm=nom
15. Par Achraf SFAXI Page 15
Apache : Aperçu
° Le serveur web le plus utilisé dans le monde.
40% des serveurs web en 1998
° Dernière mise à jour du serveur : 2.40.47
° Démon du serveur : httpd
° Les ports :
° 80 par défaut
° 443 pour le trafic sécurisé (https)
16. Par Achraf SFAXI Page 16
Où et comment trouver Apache ?
° En ligne :
– http://httpd.apache.org
– httpd://modules.apache.org
– http://www.redhat.com
° En local (pour une distribution RedHat 8.0):
– RPMs :
httpd-2.0.40-21.i686.rpm
httpd-manual-2.0.40-21.i686.rpm (docs)
° Documentation locale : http://localhost/manual/
17. Par Achraf SFAXI Page 17
Fichiers de base
° Le binaire du démon : /usr/sbin/httpd
° Le script d ’arrêt et démarrage : /etc/init.d/httpd
° La hiérarchie /etc/httpd/ contient :
– Les fichiers de configuration : /etc/httpd/conf/
– Les logs : /etc:httpd/logs/
– Les modules : /etc/httpd/modules/
° La hiérarchie /var/www/ contient :
– Les pages HTML : /var/www/html/
– Les icones : /var/www/icons/
– Les cgi : /var/www/cgi-bin/
18. Par Achraf SFAXI Page 18
Contrôle du démon
° Action permanante
° Chkconfig httpd {on,off}
° Action non permanante(session en cours)
/etc/init.d/httpd {start, stop}
° service httpd {start, status,stop, restart,...}
° Le démon est lancé sous l’identité root et s’exécute sous
l’identité apache:apache
° Les documents servis sont uniquement en lecture pour le
démon (usager apache), les CGI en lecture et exécution.
19. Par Achraf SFAXI Page 19
Configuration de base de Apache
° Configurer apache = maintenir le fichier
/etc/httpd/conf/httpd.conf
– Directives globales au daemon apache et à ses fils :
ServerRoot, L oa d M od u le, In c lu
d e,…– Directives du serveur «principal» répondant aux requêtes
qui ne sont pas gérées par des VirtualHost ; ces directives
définissent les valeurs par défaut des sites virtuels : P ort,
U s er, G rou p , ServerA d m in , ServerN a m e, D oc u m
en tRoot,
E rrorL og ...– Directives relatives aux sites virtuels : V irtu a lh os t,
D oc u m en tRoot, ServerN a m e, E
rrorlog ,
20. Par Achraf SFAXI Page 20
A retenir ...
° Commandes :
chkconfig
service
° Fichiers et répertoires :
/etc/httpd/
/var/www/
/etc/httpd/conf/httpd.conf
22. Par Achraf SFAXI Page 22
Plan
° Définition et types
° Déclaration de base d'un hôte virtuel
° Autres directives
° Contrôle d'accès
° Débogage
° Ab : outil de benchmarking
23. Par Achraf SFAXI Page 23
Définition et types
° But : exécution de plusieurs serveurs sur le même
ordinateur pour :
Différntes adresses IP
Différents noms
Différents ports
° <VirtualHost> ... </VirtualHost> : entourent un hôte
virtuel.
° La plupart des directives de configuration peuvent être
utilisées à l'intérieur et seront appliquées exclusivement à
cet hôte.
24. Par Achraf SFAXI Page 24
Configuration de base (directives)
° NameVirtualHost :définit l'adresse IP et le port d'écoute que
va contrôler chaque hôte virtuel ou tous les hôtes si cette
directives est citée une seule fois.
° ServerName : définit le nom du site
° DocumentRoot : définit le répertoire racine du contenu web
du site.
° ServerAdmin : définit l'adresse électronique du
« webmaster » du site.
25. Par Achraf SFAXI Page 25
Configuration de base (exemple)
NameVirtualHost 111.22.33.44
# --> Adresse IP sur laquelle le serveur reçoit les requêtes associées aux sites
virtuels ci-après.
<VirtualHost 111.22.33.44>
ServerName www.picasso.com
DocumentRoot /var/www/html/pica
ServerAdmin webmaster@picasso.com
</VirtualHost>
# --> Premier hôte virtuel
<VirtualHost 111.22.33.44:1233>
ServerName www.vonghog.com
DocumentRoot /var/www/html/vgog
ServerAdmin webmaster@picasso.com
</VirtualHost>
# --> Deuxième hôte virtuel contrôlant le port 1233
26. Par Achraf SFAXI Page 26
Autres directives(1)
° ErrorLog : définit le journal des erreurs.
° CustomLog : définit le journal des accès.
° ScriptAlias : définit la racine des scripts CGI.
° ErrorDocument : définit le fichier ou le message
d'erreur à transmettre au client en cas d'erreur.
° AddType : permet d'associer des paires MIME et des
extensions de fichiers.
AddType text/html .shtml
# -->Prendre en charge le format .shtml
27. Par Achraf SFAXI Page 27
Autres directives(2)
° BrowserMatch : définit des paramètres d'actions à
entreprendre tenant compte du type de navigateur client
tel que le refus d'accès à certain types de navigateurs
pouvant présenter des problèmes pendant l'exécution de
certain scripts du serveur.
° AddLangage : associe des extensions de fichiers à des
langues spécifiques Ù négociation de contenu et
préférences linguistiques du client.
28. Par Achraf SFAXI Page 28
Autres directives(3)
° Redirect : permet d'associer une nouvelle adresse à une
page qui a été déplacée de son emplacement d'origine.
Redirect /path/foo.html http://new_domain/path/foo.html
° UserDir : permet à des URL telles que
http://example.com/~jim/ de s’associer à un des répertoires
du répertoire de travail de l’utilisateur jim(exemple :
/home/jim/public_html) . Elle est par défaut désactivée
(UserDir disable). Pour l’activer :
UserDir public_html
29. Par Achraf SFAXI Page 29
Contrôle d'accès
° Contrôle des répertoires :
° <Directory> … </Directory>
° fichier .htaccess
° Contrôle des fichiers :
° <Files> … </Files>
° Contrôle des URL :
° <Location> … </Location>
° Le serveur analyse les contrôles sur les répertoires, puis
sur les fichiers et enfin sur les URL (dans l ’ordre ou
elles sont déclarées dans httpd.conf).
30. Par Achraf SFAXI Page 30
Exemple de contrôle sur les
répertoires
AllowOverride : définit des options supplémentaires sur
des répertoires du site.
° All, none, options
° Indexes : affiche le contenu du répertoire quand il n ’y a
pas de page index.html ou autre
31. Par Achraf SFAXI Page 31
Déboggage
Httpd : outil de déboggage
° -t : vérification de la syntaxe du fichier httpd.conf
° -l :liste des modules compilés avec apache
° -V : configuration
32. Par Achraf SFAXI Page 32
Ab : outil de Benchmarking des
serveurs Apache
° Pour afficher des statistiques d ’accès à un serveur Web,
lancer la commande :
/usr/sbin/ab [arguments] [URL]
° Exemples d'arguments :
° -n : définit le nombre de requêtes à envoyer
° -X proxy: port : définit le proxy et le port à utiliser
° -w : permet d'avoir des statiques sous forme d'un fichier
HTML
° Exemple de génération de statisques :
ab -n 10 http://www.voila.fr/
33. Par Achraf SFAXI Page 33
Benchmarking www.voila.fr (be patient).....done
Server Software: Apache/1.3.27
Server Hostname: www.voila.fr
Server Port: 80
Document Path: /
Document Length: 20638 bytes
Concurrency Level: 10
Time taken for tests: 1.526670 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Total transferred: 20768 bytes
HTML transferred: 20638 bytes
Requests per second: 0.66 [#/sec] (mean)
Time per request: 15266.700 [ms] (mean)
Time per request: 1526.670 [ms] (mean, across all concurrent requests)
Transfer rate: 13.10 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 71 71 0.0 71 71
Processing: 1455 1455 0.0 1455 1455
Waiting: 186 186 0.0 186 186
Total: 1526 1526 0.0 1526 1526
34. Par Achraf SFAXI Page 34
A retenir...
° Fichiers et répertoires:
° /etc/httpd/conf/httpd.conf
° /var/www/
° Commandes et directives:
° VirtualHost
° NameVirtualHost
° httpd
° Ab
35. Par Achraf SFAXI Page 35
Unit 3
Personnalisation de Apache :
Ajout de modules
36. Par Achraf SFAXI Page 36
Plan
° Méthodes d’ajout de modules
° Les modules proposés avec Apache
° Ajout de modules non livrés avec Apache
° Ajout du module PHP
° Autres modules
37. Par Achraf SFAXI Page 37
Méthodes d’ajout de modules
° Ajout statique : nécessite de recompiler Apache à chaque
ajout ou suppression de module
° Allocation dynamique : nécessite le module mod_dso
° Les RPMs d’apache pour les versions supérieures à
Redhat7.0 sont prévus pour une allocation dynamique
des modules (DSO support)
38. Par Achraf SFAXI Page 38
Les modules proposés avec Apache
° Liste : http://httpd.apache.org/docs/mod/
° Utiliser les modules par défaut
° Ajouter des modules au fur et à mesure des besoins
° Décommenter les lignes LoadModule dans le fichier
httpd.conf
° Les modules font référence à des modules dans
/etc/httpd/modules qui représente un lien vers
/usr/lib/httpd/modules
39. Par Achraf SFAXI Page 39
Ajout de modules non livrés avec
Apache
° Un catalogue des modules est disponible sur le serveur :
http://modules.apache.org
° Installer le module (généralement sous forme de rpms)
° Vérifier l’emplcement du module
° Ajouter des lignes :
° LoadModule nom_module modules/mod_nom.so
40. Par Achraf SFAXI Page 40
Ajout du module PHP
° Disponible sous forme de RPMs
° Installer impérativement :
° le module PHP pour apache : mod_php-<version>.rpm
° les librairies PHP : php-<version>.rpm
° Installer en fonction des besoins :
° php-pgsql-<version>.rpm
° php-mysql-<version>.rpm
° ...
° Arrêter et redémarrer Apache
° Installation très aisée, aucune modification à apporter au fichier
httpd.conf
41. Par Achraf SFAXI Page 41
Autres modules
° Exemple : ajout du module speling
° Ce module tente la correction d ’URL mal tapées et confond
majuscules/ minuscules dans les URL
° Dans httpd.conf, décommenter :
° LoadModule speling_module modules/mod_speling.so
° mod_ssl
° mod_include
° mod_perl
° mod_python
° mod_access …
42. Par Achraf SFAXI Page 42
A retenir …
° LoadModule
° /etc/httpd/modules
° /usr/lib/httpd/modules
44. Par Achraf SFAXI Page 44
Plan
° Architectures
° Programmation dynamique
° Interrogation des bases de données
° PHP et Postgresql
45. Par Achraf SFAXI Page 45
Architectures
° Client/serveur
Requête/RéponseClient Serveur Web
(mozilla,...) Protocole HTTP (apache)
° Multi-tiers
Requête/RéponseClient Serveur Web
SGBD(mozilla,...) Protocole HTTP (apache)
46. Par Achraf SFAXI Page 46
Programmation dynamique (1)
° Scripts côté serveur :
° Le client envoi une requête
° Exécution d’un script sur le serveur
° Renvoi du résultat au client sous forme HTML
° PHP, Java, JSP, CGI, …
47. Par Achraf SFAXI Page 47
Programmation dynamique (2)
° Scripts côté client
° Le client envoi une requête
° Renvoi du résultat au client sous forme HTML avec du
code dynamique incorporé
° Exécution du code sur le client
° Applets, JavaScript, …
48. Par Achraf SFAXI Page 48
Interrogation des bases de données
° Généralement se fait à travers une couche logicielle
intermédiaire entre le langage de programmation et le
SGBD cible : les middelwares.
° Un middelware définit une librairie offrant des
procédures pour accéder à des SGBD.
° Fonctions de base : connexion à une base, formulation de
requêtes, interrogation, traitements sur le résultat,
libération de la connexion.
° Exp : ODBC, JDBC, DBI, …
49. Par Achraf SFAXI Page 49
PHP et Postgresql
° Une solution open-source fiable pour la création de sites
web dynamique faisant appel à des bases de données
° PHP permet l’accès en natif à des bases postgresql
° Pas de couche logicielle intermédiaire(middelware)
50. Par Achraf SFAXI Page 50
PHP/Postgresql : les fonctions de base
° pg_Connect : Connexion à une base de données
° pg_Close : Fermer une connexion
° pg_Exec : Exécute une requête.
° pg_NumRows :Renvoie le nombre de tuples
(enregistrements) de la requête.
° pg_Result : Renvoie la valeur d’un champ, pour un
nombre d’enregistrement donné et un résultat de requête.
Les numéros d’enregistrement et de champ commencent
à 0.
52. Par Achraf SFAXI Page 52
Plan
° Les modes de contrôle d'accès
° Le contrôle sur les répertoires
° L'authentification : le fichier .htaccess
° Le contrôle sur les fichiers
° Le contrôle sur les URL
53. Par Achraf SFAXI Page 53
3 modes de contrôle d ’accès
° Contrôle des répertoires :
° <Directory> … </Directory>
° fichier .htaccess
° Contrôle des fichiers :
° <Files> … </Files>
° Contrôle des URL :
° <Location> … </Location>
° Le serveur analyse les contrôles sur les répertoires, puis
sur les fichiers et enfin sur les URL (dans l ’ordre ou
elles sont déclarées dans httpd.conf).
54. Par Achraf SFAXI Page 54
Le contrôle sur les répertoires(1)
--AllowOverride
° AllowOverride : définit la politique d ’utilisation des
fichiers .htaccess.
° None : le serveur ignore les fichiers .htaccess
<Directory /var/www/html>
AllowOverride None
</Directory>
55. Par Achraf SFAXI Page 55
Le contrôle sur les répertoires(2)
--AllowOverride
° AllowOverride : définit aussi des options supplémentaires sur des
répertoires du site.
° All : le serveur autorise toutes les directives citées ci-après.
° AuthConfig : autorise les directives Auth..., require, etc
° FileInfo : autorise les directives de définition des types de documents
° Indexes : autorise les directives de présentation des répertoires
° Limit : autorise les directives d'accès par machine
° Options : autorise les directives d'options
56. Par Achraf SFAXI Page 56
Le contrôle sur les répertoires(3)
--Options
° All : toutes les options
° ExecCGI : autorisation d ’exécuter des CGI.
° FollowSymLinks : autorisation de suivre les liens unix
° Includes : autorisation d ’utiliser des « Server-side
includes ».
° IncludesNOEXEC : « Server-side includes » sans la
commande #exec ou #include d ’inclusion de CGI
° Indexes : affiche le contenu du répertoire quand il n ’y a
pas de page index.html ou autre
57. Par Achraf SFAXI Page 57
Le contrôle sur les répertoires(4)
--Options
° SymLinksIfOwnerMatch : affiche seuls les liens pour lesquels le
propriétaire du fichier ou répertoire cible est le même que le
propriétaire du lien (exemple lien impossible vers fichier
/etc/passwd)
° Les options s ’appliquent au répertoire et à toute sa hiérarchie,
exemple :
<Directory /var/www/html/pica>
Options Indexes FollowSymLinks
</Directory>
58. Par Achraf SFAXI Page 58
Le contrôle sur les répertoires(4)
--les modes d'accès
° Allow from : autorisation de domaines et réseaux
° Deny from : interdiction de domaines et réseaux
° La directive Order désigne l ’ordre dans lequel les
directives Allow et Deny sont évaluées.
<Directory /docs>Order Deny,Allow
# -->les directives Deny sont Options None
Order Deny,Allow
Deny from all
évaluées
#avant les directives Allow.
#Le statut initial(par défaut) est
</Directory>
Allow.
59. Par Achraf SFAXI Page 59
Le contrôle sur les répertoires(4)
--les modes d'accès
° Order Allow,Deny
les directives Allow sont évaluées avant les directives
Deny. Le statut initial(par défaut) est INTERDIT.
° Order Mutual-failure : accès autorisé aux postes cités
dans Allow et pas cités dans Deny. Le statut initial n’est
pas connu.
60. Par Achraf SFAXI Page 60
Le contrôle sur les répertoires(5)
--Exemple
<Directory /var/www/html>
AllowOverride None
Options None
<Limit GET POST>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
<Directory>
61. Par Achraf SFAXI Page 61
Le fichier .htaccess(1)
° Authentification des utilisateurs pour l'accès à certaines
pages du site.
° Créé dans le répertoire des pages protégées par
l'authentification.
° Authentification par utilisateurs ou groupes.
62. Par Achraf SFAXI Page 62
Le fichier .htaccess(2)
° AuthName : champs commentaire.
° AuthType décrit le type d'authentification
° Basic : login et mot de passe.
° AuthUserFile définit le fichier qui stocke la déclaration
des utilisateurs authorisés et leurs mots de passe.
° AuthGroupFile définit le fichier qui stocke la déclaration
des utilisateurs authorisés et leurs mots de passe.
° require définit les utilisateurs ou les groupes authorisés
° group liste des groupes
° User liste des utilisateurs
63. Par Achraf SFAXI Page 63
Le fichier .htaccess(3)
° Exemple de fichier .htaccess
AuthName "L'INTRANET de OpenNet"
AuthType Basic
AuthUserFile /web/conf/securite/usagers
require valid-user
° Le fichier /web/conf/securite/usagers est crée par la
commande htpasswd qui crypte les mots de passe
htpasswd -c /web/conf/securite/usagers bob
htpasswd /web/conf/securite/usagers jane
#ajout des utilisateurs bob et jane au fichier
d'authentification
64. Par Achraf SFAXI Page 64
Le contrôle sur les fichiers
° Interdire ou autoriser l’accès à des fichiers vérifiant un
certain schéma
#interdire l’accès au fichiers commençant par « .ht »
(sécuriser .htaccess!!!)
<Files ~ ^.ht >
Order allow,deny
Deny from all
</Files>
65. Par Achraf SFAXI Page 65
A retenir …
° Sécuriser l’accès par adresses IP
° La directive <Directory> … </Directory>
° Sécuriser l’accès par utilisateurs
° Le fichier .htaccess
° Sécuriser l’accès pour certains fichiers
° La directive <Files> … </Files>
67. Par Achraf SFAXI Page 67
Plan
° Motivation
° Cryptographie : Notions rédumentaires
° Concepts SSL de base
° Les certificats SSL
° Obtenir un certificat SSL pour un site web
° Implémenter SSL pour la sécurisation du web
68. Par Achraf SFAXI Page 68
Motivation
° Développement anarchique des réseaux et de
l'interconnexion
° Développement des applications en relation avec
l'Internet (e-commerce, télé-compensation, télé-travail...)
° La disponibilité des outils de crackage, d'attaque et
d'usurpassion au commun des mortels (Google affiche 11500000
résultats pour le mot « crack » )
° L'information est devenue un patrimoine économique qui
se monnaye
69. Par Achraf SFAXI Page 69
Cryptographie : Notions
rédumentaires
La cryptographie fait référence à trois notions
rédumentaires à savoir :
° Le chiffrement
° Le déchiffrement
° La signature électronique
70. Par Achraf SFAXI Page 70
Les types de chiffrement
° Il existe deux types de chiffrement :
° Chiffrement symétrique
° Clef secrète
° Chiffrement asymétrique
° Clef publique
° Clef privée
° La combinaison de ces deux types est, également,
possible
° Le principe de la clef de session
71. Par Achraf SFAXI Page 71
Exemples d'algorithmes de
chiffrement
° DES (Data Encryption Standard)
° RSA (Rivest Shamir Adelman)
° PGP (Pretty Good Privacy)
72. Par Achraf SFAXI Page 72
L'historique du protocole SSL
° Le protocole SSL (Secure Socket Layer) fut inventé par
Netscape en collaboration avec Master Card, Bank of
America et Silicon Graphics
° Il sert à sécuriser les transactions entre les serveurs web
et les outils de navigation
° Au milieu de l'année 2001, le brevet de SSL appartenant
jusqu'alors à Netscape a été acheté par l'IETF (Internet
Engineering Task Force) et a été rebaptisé TLS
(Transport Layer Security)
73. Par Achraf SFAXI Page 73
SSL :Principe(1)
° Le protocole SSL agit de bout en bout
° Il peut être assimilé à une couche supplémentaire qui se
place entre la couche transport et la couche application
° Toutes les applications classiquement utilisées au dessus
de TCP peuvent profiter du protocole SSL
° POP3S (995), IMAPS (993), LDAPS (636), HTTPS
(443), etc...
75. Par Achraf SFAXI Page 75
Fonctionnement
Le protocole SSL est scindé en deux sous couches :
° SSL Record Protocol (la sous couche basse)
° S'appuye sur la couche TCP
° Elle assure l'encapsulation des éléments des couches
supérieures
° SSL Handshake Protocol
76. Par Achraf SFAXI Page 76
La sous couche
SSL Handshake Protocol
° La sous couche « SSL Handshake Protocol » est
responsable de la négociation et le choix des paramètres
de session
° (e.g)s de paramètres de sessions :
° Identificateur de session
° Certificats X509 des partenaires
° Méthode de compression des données
° Algorithme de chiffrement choisi
77. Par Achraf SFAXI Page 77
Le choix de l'algorithme de
chiffrement
° Il détermine l'apptitude du cryptgramme à supporter à
des tentatives de cassage
° Le choix correspond à l'algorithme ayant la plus grande
taille de clef (parmis les algorithmes communs au client
et au serveur)
78. Par Achraf SFAXI Page 78
Les certificats SSL :Besoin
° La clef publique est publiée sur un annuaire LDAP ou un
site web personnel (chiffrement asymétrique)
° Nécessité de garantir
° L'appartenance de clef à la personne avec laquelle les
échanges sont envisagées
° L'honnêteté du possesseur de la clef
° La validité de la clef
° Rôle de l'autorité de certification
79. Par Achraf SFAXI Page 79
Qu'est ce qu'un certificat
° Un petit fichier
° Carte d'identité de la clef publique
° Un document électronique résultant d'un traitement
fixant les relations entre une clef publique, son
propriétaire et une application
80. Par Achraf SFAXI Page 80
Contenu d'un certificat(1)
° Selon le standard X509 de l'UIT – RFC 2459, un
certificat est constitué de deux parties :
° Une partie contenant des informations
° Une partie contenant la signature de l'autorité de
certification
84. Par Achraf SFAXI Page 84
Autorité de Certification
° Une AC est une organisation qui délivre les certificats à
une population
° Une AC possède, à son tour, un certificat
° L'AC utilise sa clef privée pour générer des certificats
° Une AC peut être organisationnelle, spécifique à un
corps de métiers (notaires) ou institutionnelle
° Les certificats sont limités à un organisme, à un
ensemble d'organisme ou à une communauté
85. Par Achraf SFAXI Page 85
Sécuriser le web :Principe de
Fonctionnement(1)
° Le navigateur demande une page web sécurisée
° Le serveur web émet sa clef publique et son certificat
° Le navigateur vérifie :
° La validité du certificat
° La fiabilité de l'authorité de certification
° La correspondance entre le certificat et le site sujet de la
connexion
86. Par Achraf SFAXI Page 86
Principe de Fonctionnement (2)
° Le navigateur chiffre
° La clef de session avec la clef publique du serveur
° L'url demandée et les données http avec la clef de session
° Le serveur déchiffre
° La clef de session avec la clef publique du serveur
° L'url demandée et les données http avec la clef de session
87. Par Achraf SFAXI Page 87
Principe de Fonctionnement (3)
° Le serveur renvoie le document html et les données http
chiffrées avec la clef de session
° Le navigateur déchiffre l'ensemble avec la clef de session
88. Par Achraf SFAXI Page 88
Le web sécurisé sous Mozilla
° Sous Mozilla, la communication avec un serveur web
sécurisé par SSL se manifeste par:
° Une url commencçant par « https:// »
° Un cadenas verouillé en bas de page à droite
89. Par Achraf SFAXI Page 89
Implémentation de SSL(1)
° Vérifier que Apache est installé et que le service httpd
est actif
° Vérifier que le package Openssl est installé
° Installer le package mod_ssl
° Générer une clef privée (nom_clef.key)
° Générer une clef publique (nom_clef.csr)
° Générer un certificat X.509 (nom_clef.crt)
90. Par Achraf SFAXI Page 90
Implémentation de SSL (2)
° Copier les fichiers obtenus vers les répertoires suivants :
° /etc/httpd/conf/ssl.key/
° /etc/httpd/conf/ssl.csr/
° /etc/httpd/conf/ssl.crt/
° Modifier le fichier /etc/httpd/conf.d/ssl.conf de façon que
les directives SSLCertificateFile,
SSLCertificateKeyFile et SSLCACertificateFile
pointent vers les fichiers que vous avez généré
° Relancer le service httpd
91. Par Achraf SFAXI Page 91
Obtenir un certificat pour un site web
° Contacter une autorité de certification
° Accomplir les modalités administratives et législatives
(elles varient selon le pays et la CA)
° Publier votre clef publique au sein d'un annuaire LDAP
ou sur votre site web