Comment implémenter SSL dans Apache Tomcat ?

Un guide étape par étape pour configurer un certificat SSL/TLS sur le serveur Tomcat.

L’une des tâches essentielles pour sécuriser Tomcat consiste à configurer le certificat SSL, afin que l’application Web soit accessible via HTTPS.

Il existe de nombreuses façons d’y parvenir.

  • Vous pouvez résilier SSL sur un équilibreur de charge
  • Implémenter SSL au niveau du CDN
  • Utilisez des serveurs Web comme Apache, Nginx, etc. devant et implémentez SSL là-bas

Cependant, si vous n’utilisez aucun des éléments ci-dessus ou si vous l’utilisez comme frontal ou si vous avez besoin de déployer SSL directement dans Tomcat, les éléments suivants vous aideront.

Dans cet article, nous ferons comme ci-dessous.

  • Générer CSR (demande de signature de certificat)
  • Importer un certificat dans un fichier keystore
  • Activer SSL dans Tomcat
  • Configurer le protocole TLS
  • Changer Tomcat pour écouter sur le port 443
  • Tester Tomcat pour la vulnérabilité SSL

Commençons…

Préparation au certificat SSL/TLS

La première étape serait de générer un CSR et de le faire signer par le autorité de certification. Nous utiliserons l’utilitaire keytool pour gérer les certificats.

  • Connectez-vous au serveur Tomcat
  • Accédez au chemin d’installation de tomcat
  • Créer un dossier appelé ssl
  • Exécuter la commande pour créer un keystore
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

Il y a deux variables dans les commandes ci-dessus que vous voudrez peut-être modifier.

  • Alias ​​- mieux vaut le garder significatif afin qu’à l’avenir vous puissiez le reconnaître rapidement. Je préfère le garder comme nom de domaine.
  • Nom de fichier – encore une fois, il est bon de conserver le nom de domaine.
  • Ex:

    [[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
    Enter keystore password:
    Re-enter new password:
    What is your first and last name?
    [Unknown]: bloggerflare.com
    What is the name of your organizational unit?
    [Unknown]: Blogging
    What is the name of your organization?
    [Unknown]: Geek Flare
    What is the name of your City or Locality?
    [Unknown]:
    What is the name of your State or Province?
    [Unknown]:
    What is the two-letter country code for this unit?
    [Unknown]:
    Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct?
    [no]: yes
    
    Enter key password for <bloggerflare>
    (RETURN if same as keystore password):
    
    [[email protected] ssl]#

    Faites attention à la question du prénom et du nom de famille. C’est un peu trompeur je pense. Ce n’est pas votre nom mais le nom de domaine que vous souhaitez sécuriser.

    Une fois que vous avez fourni toutes les informations, il créera un fichier de magasin de clés sur un répertoire de travail actuel.

    Ensuite serait de générer un nouveau CSR avec le keystore nouvellement créé avec la commande ci-dessous.

    keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks

    Cela créera un CSR que vous devrez envoyer à l’autorité de certification pour le faire signer. Si vous jouez, vous pouvez envisager d’utiliser un fournisseur de certificat GRATUIT, sinon optez pour un fournisseur premium.

    J’ai obtenu le certificat signé et je vais procéder à l’importation dans le magasin de clés avec la commande ci-dessous.

    • Le certificat racine d’importation est fourni par le fournisseur
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Importer un certificat intermédiaire
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Remarque : sans importer la racine et l’intermédiaire, vous ne pourrez pas importer le certificat de domaine dans le magasin de clés. Si vous avez plus d’un intermédiaire, vous devez tous les importer.

    • Importer un certificat de domaine
    keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

    et, vous obtiendrez une confirmation qu’il a été installé.

    La réponse de certificat a été installée dans le magasin de clés

    Génial, donc le magasin de clés de certificat est prêt maintenant. Passons à l’étape suivante.

    Si vous êtes nouveau sur SSL et que vous souhaitez en savoir plus, inscrivez-vous à ce cours en ligne – Opérations SSL/TLS.

    Activer SSL dans Tomcat

    En supposant que vous êtes toujours connecté au serveur Tomcat, accédez au dossier conf

    • Effectuez une sauvegarde du fichier server.xml
    • Allez à la section
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • N’oubliez pas de changer le nom et le mot de passe du fichier keystore avec le vôtre
    • Redémarrez Tomcat et vous devriez voir que Tomcat est accessible via HTTPS

    Sucré!

    Port HTTPS standard

    Pourquoi?

    Eh bien, si vous regardez la capture d’écran ci-dessus, j’accède à Tomcat sur 8080 avec https qui n’est pas standard et quelques autres raisons.

    • Vous ne voulez pas demander aux utilisateurs d’utiliser un port personnalisé
    • Le navigateur donnera un avertissement car le certificat est émis sur le nom de domaine sans le port

    L’idée est donc de faire en sorte que Tomcat écoute sur le port 443 afin qu’il soit accessible via https:// sans le numéro de port.

    Pour ce faire, éditez server.xml avec votre éditeur préféré

    • Allez sur <Connector port="443" protocol="HTTP/1.1" connectionTimeout="20000" SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS" redirectPort="8443" />
      • Redémarrez Tomcat et accédez à votre application en https sans numéro de port

      Impressionnant, c’est une réussite !

      Test de vulnérabilité SSL/TLS

      Enfin, nous effectuerons un test pour nous assurer qu’il n’est pas vulnérable aux menaces en ligne.

      Il existe de nombreux outils en ligne dont j’ai parlé ici, et ici j’utiliserai SSL Labs.

      Et c’est VERT – Une note.

      Cependant, c’est toujours une bonne idée de faire défiler le rapport et de voir si vous trouvez une vulnérabilité et de la corriger.

      C’était donc tout pour aujourd’hui.

      J’espère que cela vous aidera à connaître la procédure de sécurisation de Tomcat avec un certificat SSL/TLS. Si vous souhaitez en savoir plus, je vous le recommande fortement cours.