Catégorie: "HTTP/SSL"

Microsoft: Navrant...

A priori je n'ai pas de religion à propos des éditeurs, des systèmes, des technologies... mais plus ça va plus je trouve le comportement de Microsoft navrant...
Deux exemples récents:


Pas très digne d'un leader tout ça...

L'Internet a 20 ans!

C'est en janvier 1983 que le réseau ARPANET a adopté TCP/IP comme protocoles de transmission permettant d'interconnecter plusieurs réseaux entre-eux. Il s'agit là de la technologie fondatrice de l'Internet tel que nous le connaissons aujourd'hui.

A quoi sert SSL? [Archive 1998]

[Ce post a été déterré de mes archives 1998]

Exemple concrêt:

  1. Un utilisateur souhaite transmettre son numéro de carte bancaire à un serveur de manière sécurisée.
  2. L'utilisateur doit chiffrer son message (en l'occurence son numéro de carte) grâce à une clé. Et le serveur doit déchiffrer le message grâce à une clé.
  3. Si on utilisait une méthode de chiffrement simple (symétrique), l'utilisateur et le serveur devraient au préalable se mettre d'accord sur une clé de chiffrement/déchriffrement secrête et connue d'eux seuls afin que personne d'autre ne puisse déchiffrer le message.
  4. Cet échange de clé secrête n'est pas possible par Internet, car si on pouvait se transmettre secrêtement une clé, on pourrait directement se transmettre secrêtement le numéro de la carte bancaire. On tourne en rond...
  5. La solution consiste à utiliser une méthode de chiffrement asymétrique: le chiffrement se fait avec une clé et le déchiffrement se fait avec une autre clé. Bien sûr, pour toute clé de chiffrement il n'existe qu'une seule clé de déchiffrement possible. Ces clefs fonctionnent donc exclusivement par paires.
  6. Le serveur définit donc une paire de clefs. Il en garde une secrète (la clef privée). Il en donne une autre à tous ses utilisateurs (la clef publique).
  7. Dès lors, tout utilisateur peut chiffrer son message avec la clef publiquer et l'envoyer en toute confiance au serveur qui sera le seul à pouvoir le déchiffrer car il est le seul à posséder la clef privée, indispensable au chiffrement.

    Note: en réalité, le browser va chiffrer une clef master aléatoire qu'il va envoyer au serveur qui est le seul à pouvoir la déchiffrer avec sa clef privé. Cette clef master est ensuite utilisée pour chiffrer à la fois les messages envoyés au serveur et les messages reçus du serveur. Toutes les informations échangées entre le browser et le serveur sont ainsi cryptées.
  8. Mais ça ne suffit pas. En effet: que se passe-t-il si jamais une personne malveillante diffuse une fausse clef publique? Le message chiffré envoyé par l'utilisateur ne sera plus déchiffrable par la clef privée du serveur. Par contre il sera déchiffré facilement par le pirate qui possède la clef privée correspondant à la fausse clef publique.
  9. Il est donc indispensable que l'utilisateur soit sûr d'utiliser la BONNE clef publique.
  10. Pour être sûr, il dispose d'un certificat émis par une Autorité de certification et qui certifie que la clef est la bonne.
  11. Mais comment être sûr que le certificat n'est pas un faux? Réponse: parce qu'il est signé électroniquement par une aurtorité de certification (AC) connue à l'avance. (Une liste d'AC est préenregistrée 'en dur' dans le browser Web).
  12. La signature électronique fonctionne sur le même principe: l'AC chiffre le certificat avec sa propre clef privée et l'utilisateur déchiffre le certificat avec la clef publique de l'AC. Rappelons qu'il connait cette clef publique à l'avance car les AC et leurs clefs publiques sont préenregistrées dans le browser Web.

Mettre en place un serveur HTTP

Introduction

Un serveur HTTP est un logiciel qui, lorsqu'il est lancé sur une machine reliée à Internet, permet à tout utilisateur d'Internet de se connecter sur cette machine avec un client HTTP tel que Netscape Navigatoir ou NCSA Mosaic et d'obtenir des informations, en particulier des documents HTML.

On parle de serveur HTTP parce que leur rôle est de répondre à des requêtes et d'envoyer des pages d'information en utilisante le protocole HTTP (HyperText Transfer Protocol). Néanmoins, ces serveurs font souvent beaucoup plus que celà... à tel point qu'on pourrait se demander si l'appellation "serveur HTTP" n'est pas un peu réductrice. On parlera également de "Serveur WWW" ou de "HTTPd", le 'd' signifiant ici daemon, terme utilisé dans la terminologie UNIX pour désigner un programme qui attend en permanence des évènements (ici des requêtes HTTP) pour entreprendre des actions (ici envoyer des documents par HTTP). 

Bénéfices

Les bénéfices que vous tirerez de la mise en oeuvre de votre propre serveur HTTP sont multipes. Tout d'abord, si votre organisation ne dispose encore d'aucun serveur web, vous devez choisir entre faire héberger votre service web chez un prestataire ou alors installer votre propre serveur web.

Par ailleurs, même si votre organisation dispose déjà d'u ou plusieurs webs, il peut quand même être intéressant de disposer de votre propre serveur, par exemple pour avoir un contrôle direct sur vos programmes CGI ou sur les statistiques de connexions.

Dans tous les cas, les possibilités offertes à l'administrateur d'un serveur WWW sont bien plus larges que celles de la personne qui se contente d'écrire quelques pages HTML et de les placer sur un serveur géré par quelqu'un d'autre. Aussi, si vous en avez le temps et les moyens, vous devriez probablement commencer à envisager la possibilité d'administrer votre propre serveur...

 

Quel serveur choisir?

A ce jour, vous avez le choix entre plus de 40 serveurs HTTP dont un certain nombre sont gratuits. En voici une liste non exhaustive (mais assez complète quand même). En sélectionnant un nom dans la liste vous accéderez au service WWW dédié à ce serveur.

Plusieurs critères sont à prendre en compte lors du choix de votre serveur:

  • Exigences marérielles et logicielles

    • Disponibilité sur votre plate-forme serveur
    • Disponibilité pour votre système d'exploitation
  • Niveau de support Technique
  • Prix
  • Capacité à offirir des services Web différents pour des adresses IP différentes
  • Enregistrement de journal (Logs)

    • Compatibilité avec syslog (UNIX) ou EventLog (Windows NT)
    • Utilisation du format commun CERN/NCSA
    • Archivage/cyclage automatique des fichiers jounral
    • Posssibilité de personnalisé les enregistrements de hits
    • Possibilité de logguer dans plusieurs fichiers différents
    • Possibilité de générer des enregistrements spéciaux dans les fichier de log(commentaires...)
    • Possibilité pour les scripts CGI de créer leurs propres entrées de log
    • Logs de mesure de performances
  • Richesse du protocole

    • Réponse automatique à "If-Modified-Since"
    • Selection de fichiers basé sur le header "Accept"
    • Changer d'action basé sur le header "User-Agent"
    • Répondre avec des documents différents basé sur des headers clients tels que "Accept", "User-Agent" et "URL"
    • Inclusions faites par le serveur
    • Inclusions faites d'après commentaires HTML (sans utilisation de CGI)
    • Inclusion automatique de headers HTTP pour les documents non HTML (sans utilisation de CGI)
    • Accès au variables d'état du serveur depuis CGI
    • Possibility d'envoyer des documents ou images dynamiques (Server Push)
  • Sécurité

    • Possibilité d'exiger un mot de passe
    • Support de SSL
    • Support de S-HTTP
    • Restriction à certains noms de domaines
    • Restrictions à certaines adresses IP
    • Accès à certaines hierarchies selon l'adresse IP
    • Groupes d'utilisateurs configurables
    • Possibilité de changer la liste de contrôles d'accès sans redémarrer le serveur
    • Restrictions d'accès à certains fichiers
    • Encryptage et authentification par clé publique
  • Autres fonctions

    • Outils de configuration graphiques
    • Outils de maintenance graphiques
    • Maintenance à distance pendant que le serveur tourne
    • Outils de mesure de performances temps-réel
    • Implmente d'autres protocoles (ftp, gopher...)
    • Arborescence automatique
    • Gestion des répertoires utilisateurs
    • Inclue un moteur de recherche
    • Peut servir de serveur proxy
    • Peut servir de serveur proxy avec cache