Connexion
Abonnez-vous

Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt

Jusqu’ici, tout va bien ?

Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt

Hier, nous avons mis en ligne la première partie de notre dossier sur l’installation et la configuration de Guacamole, avec la configuration et la sécurisation d’une machine virtuelle. On passe désormais la seconde avec l’installation de Tomcat et la mise en place d’un certificat Let’s Encrypt.

Le 12 décembre 2023 à 18h41

Notre dossier sur Guacamole :

Installation des pré-requis

Nous avons tout regroupé pour que cela soit plus simple. Dans la suite, n’installez pas le package libtelnet-dev (bien qu’indiqué dans la documentation) et n’installez le package libwebsockets-dev que si vous en avez besoin (pour Kubernetes). Pour libwebp-dev, à vous de voir, mais cette bibliothèque a été un peu chahutée ces temps-ci et elle n’est que facultative.

root@ubuntu:~# apt install tomcat9 
root@ubuntu:~# apt install autoconf gcc make
root@ubuntu:~# apt install libcairo2-dev libjpeg-turbo8-dev libjpeg-dev libpng-dev libpng-dev libtool-bin uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libssl-dev libvorbis-dev 

Vous pouvez vérifier le bon fonctionnement du site en allant sur http://votre_ip:8080 (sans oublier de modifier le pare-feu). Ça n’est pas obligatoire : on va passer rapidement en https. N’installez pas les applications d’exemple ni même la partie d’administration, sauf si vous en avez besoin pour autre chose : ici, ça ne servira pas.

Prenons aussi les devants et installons les prérequis pour Guacamole.

La partie simple : créer des certificats Let’s Encrypt

# apt install certbot

Certbot ne sachant pas se dépatouiller avec tomcat (on le comprend), on va le laisser créer les certificats et on va paramétrer ensuite à la mimine tout ce qu’il faut derrière.

# certbot certonly

Pas de consignes spéciales pour les certificats, à part qu’il faut choisir l’option 1 qui permet à l’utilitaire de créer un serveur web temporaire servant à vérifier l’association du certificat et du site.

On peut aussi taper directement :

# certbot certonly --standalone -d domaine

On ne va pas s’appesantir, cette partie est simple et facile, la suite le sera un peu moins. [troll] À cause de ce foutu Java qui vous dit en 60 lignes que vous avez déclaré deux fois le même hôte dans le fichier de configuration, alors qu’en réalité vous n’avez qu'utilisé un paramètre (sans aucun rapport) en voie d’obsolescence (déprécié, comme on dit en mauvais français).[/troll]

Il ne reste plus qu’à ajouter ces fichiers dans la configuration server.xml, en « décommentant » la partie suivante :

Pour rediriger automatiquement le site http (port 8080) vers https (8443), il faut ajouter la section suivante dans web.xml cette fois :

...
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
 
    <security-constraint>
       <web-resource-collection>
             <web-resource-name>HTTPSOnly</web-resource-name>
             <url-pattern>/*</url-pattern>
       </web-resource-collection>
       <user-data-constraint>
             <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
    </security-constraint>
 
</web-app>

Avant de redémarrer votre tomcat, il faudra changer les permissions d’un répertoire, positionnées par défaut par certbot, mais qui ne conviendront pas à notre serveur Java.

root@r:/etc# chmod -R 755 /etc/letsencrypt
root@r:/etc/letsencrypt# systemctl restart tomcat9

On récupère les avocats… et on les met de côté pour demain

Notre serveur Tomcat tourne, mais il est bien vide ! Nous allons lui ajouter Guacamole.

On peut en faire une partie via apt et ses packages, mais même sur Ubuntu 22 on n’a droit qu’à une vieille version. Ça vaut donc le coup de faire un petit effort pour disposer de la plus récente, à retrouver sur Apache Guacamole : Release Archive.

Par exemple pour la version 1.5.3, récupérons les packages dans un répertoire dédié à cet usage (par exemple /guacd)

root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz.sha256
 root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-client-1.5.3.tar.gz.sha256

On s’assure que tout est en ordre en vérifiant le hash et la signature du fichier. Ajoutons d’abord la clé PGP/GPG du signataire des packages concernés :

root@r:/guacd# gpg --keyserver hkps://keyserver.ubuntu.com --recv-key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: key 5B2977AEE5E4518F: public key "Michael Jumper (CODE SIGNING KEY <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

On vérifie ensuite les deux packages :

root@r:/guacd# gpg -v guacamole-server-1.5.3.tar.gz.asc
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-server-1.5.3.tar.gz'
gpg: Signature made Mon Jul 17 00:11:02 2023 UTC
gpg:                using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096
root@r:/guacd# gpg -v guacamole-client-1.5.3.tar.gz
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error
root@r:/guacd# gpg -v guacamole-client-1.5.3.tar.gz.asc
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-client-1.5.3.tar.gz'
gpg: Signature made Wed Jul 26 06:14:39 2023 UTC
gpg:                using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096

Dans la suite de notre dossier, on passera à l’installation de Guacamole à proprement parler et à la mise en place d’une base de données. Rendez-vous demain !

Commentaires (13)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar
Je me dis que de petits schémas pourrait encore mieux aider à la compréhension méta de cette suite d'article. Car, à part être un utilisateur aguerrit de Linux, toutes ces évidences peuvent paraître abstraites.
votre avatar
Super tuto.
Cela dit vu la relative complexité du setup je proposerai aussi un tutoriel pour une installation via Docker qui simplifie grandement tout cela!
votre avatar
Dans ce cas, il faut aussi le tuto "Installation et configuration de docker"...
votre avatar
Pour faire bac à sable oui, mais si c'est un serveur proxy/bastion tu ne vas pas le mettre avec tes autres serveurs applicatifs. Autant voir une bonne méthode, faire un docker run sur son pc est facile à côté de cela.
votre avatar
Guacamole est sur la liste de choses à tester depuis un certain temps, cela va me faciliter la tâche! Je trouve ces 2 premiers volets de tuto plutôt clairs. Un peu de technique barbu c'est pas mal non plus!
votre avatar
Petit jeu : où se trouve la signature de Flock sur ses dessins dans l'entête au début de l'article ?

Sur les premiers dessins de cette série d'articles (1/5, 2/5), pas trouvé ! A moins qu'ils ne soient pas de lui, pourtant on semble reconnaître sa patte.

Par contre sur cet article "Le poing Dev – Round 8" : trouvé !
votre avatar
Si si, c'est bien Flock. Il a peut-être recadré son illustration (où il l'a fournie à l'arrache).
votre avatar
C'est bien moi et c'est corrigé, merci. Il m'arrive parfois d'oublier ce détail, effectivement :-)
votre avatar
OK, mais je persiste du coup.

On peut en faire un jeu. Le premier qui trouve gagne "à définir", et ça permet de dévoiler la signature.
Celle sur "Le poing Dev – Round 8" était déjà très discrète. Et ça fait quelque temps que je m'amuse à chercher en constatant que c'était pas toujours évident.

Enfin bon, c'est peut-être pas simple à mettre en place, ou trop de boulot.
Je lance l'idée, comme c'est encore la Beta.
votre avatar
Tu gagnes déjà toute mon estime à la rechercher :D
J'ai pour habitude sur les illus de fondre ma signature dans le dessin. Question d'ordre esthétique. Donc on va continuer à jouer !
votre avatar
Super et merci !!!
votre avatar
C'est cool l'article, mais il faut déjà énormément de connaissances pour comprendre de quoi on parle. Par ex., on installe tomcat, mais y'a pas un mot sur ce que c'est et à quoi ça sert. Je peux faire la recherche moi même, mais juste un mot serait le bienvenue !
votre avatar
A un moment faut se sortir les doigts hein. Que tu sois dev ou dans l'infra ne pas connaitre même de loin Tomcat...

Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt

  • Installation des pré-requis

  • La partie simple : créer des certificats Let’s Encrypt

  • On récupère les avocats… et on les met de côté pour demain

Fermer