Configuration/basculement d'un service IIS sur SSL

Ce document vise à vous faciliter guider dans la configuration d'un service IIS sur SSL (HTTPS) qui soit en adéquation avec les bonnes pratiques actuelles.

La première étape est de générer une demande de signature pour un certificat SSL QuoVadis. La procédure est documentée sur https://www.digicert.com/csr-creation.htm et elle doit tenir compte des particularités exigées pour toute machine appartenant à l'EPFL, mentionnées sur https://rauth.epfl.ch/conditions.html.

Une fois le CSR généré, vous pourrez le soumettre via le formulaire https://tremplin.epfl.ch/servCertReq-SCS.cgi pour signature. C'est un responsable informatique (au sens de l'accréditation) de l'unité à laquelle est rattaché le serveur qui doit le faire.

Vous allez recevoir une invitation à télécharger le certificat signé de la part de QuoVadis (à l'adresse email indiquée dans la requête). Prenez garde à télécharger le certificat au format PEM contenant le certificat intermédiaire de QuoVadis ("Server certificate with chain in PEM format"). Ensuite, vous pourrez finaliser la configuration de ce dernier en vous basant sur les instructions présentées sur https://www.digicert.com/ssl-certificate-installation.htm, que vous adapterez à votre environnement.

Une fois cette étape réalisée, vous disposer d'un service web qui accepte normalement des connexions en HTTPS, mais qui ne respecte pas forcément les bonnes pratiques en matière de sécurité informatique (les protocoles et ciphers proposés par défaut étant désuets, voire dangereux). Il s'agit maintenant de configurer le stack SSL. Pour ce faire :

 

  1. Téléchargez l'utilitaire gratuit IIS Crypto depuis la page https://www.nartac.com/Products/IISCrypto/Download. Préférez la version graphique -- GUI -- de cet outil.
     
  2. Exécutez-le sur le serveur web. L'installation d'une mise à jour du framework .NET pourrait éventuellement vous être demandée.
     
  3. Une fois l'outil lancé, cliquez simplement sur le bouton "Best Practices" en bas à gauche de la fenêtre et désactivez le "Cipher" "Triple DES 168" dans la seconde colonne. Validez le changement de configuration en cliquant sur "Apply"

     
  4. Un redémarrage du serveur (pas seulement du service IIS) est désormais requis. Effectuez-le.
     
  5. Vérifiez la bonne application de ces changements grâce à l'une des applications suivantes :
     
    1. Pour un serveur uniquement accessible depuis le réseau de l'EPFL (fermé sur DIODE) --> https://secure-it.epfl.ch/testssl/
    2. Pour un service joignable depuis l'extérieur, l'application mentionnée ci-dessus ou https://www.ssllabs.com/ssltest/
       
  6. Vous devriez obtenir un résultat d'analyse ne montrant aucun problème sérieux (pas de lignes en rouge), respectivement la note "A" au minimum. Dans la négative, prenez contact avec le groupe sécurité de la VPSI via un ticket au 1234@epfl.ch.

Les recommandations du groupe sécurité sont d'uniquement offrir un accès HTTPS pour les nouvelles applications et d'offrir un mode mixte HTTP/HTTPS avec basculement en mode sécurisé pour celles qui ont un historique (et qui sont référencées sur d'autres pages). La suite de la lecture de ce document vous guidera dans la procédure à suivre pour mettre en place une redirection automatique en HTTPS.

  1. Installez l'extension "URL Rewrite" disponible sur https://www.iis.net/downloads/microsoft/url-rewrite
     
  2. Modifiez le fichier web.config à la racine de votre site selon l'exemple fourni en bas de page (les lignes ajoutées pour la redirection automatique sont en vert).
     
  3. Redémarrez les services IIS et testez la redirection automatique en HTTPS. Si elle ne fonctionne pas comme prévu, contactez le groupe sécurité de la VPSI via un ticket au 1234@epfl.ch.
web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
          <rules>
            <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
              <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>

    </system.webServer>
</configuration>