1 votes

Let's Encrypt avec Bitnami, avec quelques numéros de port bizarres

J'ai récemment (et je pense que c'était sur ServerFault, StackOverflow, ou un autre forum StackExchange) découvert que les piles Bitnami fournissent un outil pour utiliser Let's Encrypt, un outil qui apparemment utilise autre chose que certbot (quelque chose appelé "lego", n'est-ce pas ?).

Nous avons une pile Bitnami Trac/SVN fonctionnant sur une instance AWS EC2 (Amazon Linux d'origine). Je remarque qu'il y a apparemment deux instances httpd distinctes présentes sur la boîte ; celle de la pile Bitnami est la plus active, hébergeant Trac et SVN. (Je pense avoir démarré l'autre, il y a quelques mois, en rapport avec une tentative ratée de faire fonctionner certbot, et l'avoir peut-être laissée en place, mais elle ne fait pas grand-chose en réalité).

Le httpd Bitnami est configuré pour HTTP sur le port 81 (qui n'est pas actuellement accessible de l'extérieur), et HTTPS sur le port 8000 (qui est accessible), et utilise actuellement un certificat de Comodo, qui expire en juillet.

Et je ne me souviens pas de la configuration initiale du port "tel que livré" pour le httpd dans la pile Bitnami.

J'ai lu les instructions de ce "bncert-tool", et je me demande s'il va fonctionner avec notre configuration. D'après mes expériences ratées avec certbot, j'avais l'impression que Let's Encrypt s'attendait à trouver http ouvert sur 80.

Quelqu'un peut-il m'éclairer à ce sujet ?


Mise à jour du 18 mai

Je me suis enfin souvenu de ce projet à un moment où je pouvais réellement y consacrer du temps. J'ai cloné l'instance vers une instance Spot, puis (1) j'ai désactivé le httpd "stock" fourni avec Linux, et (2) j'ai modifié le httpd de la pile Bitnami pour qu'il écoute sur 80. Lorsque j'ai lancé bncert-tool, j'ai obtenu ceci :

Une erreur s'est produite lors de la création de certificats avec Let's Encrypt :

acme: Error -> One or more domains had a problem:
[test.wintouch.net] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized 
:: Cannot negotiate ALPN protocol "acme-tls/1" for tls-alpn-01 challenge, url:

Et maintenant ?

(J'ai sauvegardé le fichier journal).


Mise à jour du 22 mai

Il m'est apparu que, tel que le serveur est actuellement configuré, il est impossible d'accéder à tout ce qui est sans mot de passe.

Alors, j'ai essayé une autre instance ponctuelle. Après quelques manipulations, je l'ai configurée pour qu'elle écoute sur 80, sans mot de passe, et qu'elle serve une page statique sur ce port, situé loin des données SVN et Trac.

Mais les résultats étaient exactement les mêmes qu'avant. Comme avant, j'ai a mis fin à la demande ponctuelle et a supprimé l'enregistrement de la Route 53 A dans le cadre du nettoyage.

Après l'expérience de la journée, j'ai cherché à configurer mon instance Spot à partir de ce que j'avais utilisé lors de la configuration initiale, et j'ai découvert quelque chose de plutôt étrange : toutes les AMI Bitnami SVN et Trac que j'ai pu voir sont soit Debian, soit Ubuntu. Mais este est sur Amazon Linux (original, pas Amazon Linux 2). Donc, soit il s'agit d'une AMI qui n'existe plus, soit j'ai lancé l'instance à partir d'une AMI Amazon Linux "vanille", puis j'ai installé la pile SVN/Trac de Bitnami dessus.

Je noterai que la pile, y compris bncert-tool, ne no vivent dans /opt/bitnami, mais dans /opt/trac-1.2.3-11

Alors, comme je n'arrivais pas à inspecter une configuration "telle que livrée", j'ai regardé autour de moi, en me demandant ce que bncert-tool utilise pour trouver la pile, et j'ai fini par trouver /opt/trac-1.2.3-11/properties.ini

hostname=
[Support]
installed_components=apache
apache_logs=apache{,2}/logs/error*log logs/error_log
apache_conf=apache{,2}/conf/{*.conf,bitnami/*.conf} etc/httpd.conf apps/*/conf/ht*.conf
apache_acl=apache apache2
[Apache]
apache_server_port=81
apache_user=daemon
apache_group=daemon
apache_server_ssl_port=443
apache_root_directory=/opt/trac-1.2.3-11/apache2
apache_htdocs_directory=/opt/trac-1.2.3-11/apache2/htdocs
apache_domainname=ip-172-31-8-195.us-east-2.compute.internal
apache_configuration_directory=/opt/trac-1.2.3-11/apache2/conf
apache_version=2.4.39
[Subversion]
subversion_port=3690
subversion_root_directory=/opt/trac-1.2.3-11/subversion

qui semble inchangé depuis l'installation (tout ce qui se trouve dans /opt/trac-1.2.3-11 a un datestamp du 6 juin 2019).

Se pourrait-il que bncert-tool utilise ce fichier de configuration, et que l'est déjà en disant à Let's Encrypt d'utiliser le port 81 au lieu de 80 ?

Je noterai que contrairement au fichier de configuration ci-dessus, l'instance Bitnami de httpd écoute pour SSL/TLS sur 8000, et non 443, un serveur Tomcat (indépendant de la pile Bitnami) écoute sur 8443 (et apparaît dans netstat -l --numeric-ports comme) 8443, mappé en 443 via iptables, et rien écoute directement sur le port 443.

1voto

Jota Martos Points 291

Ingénieur Bitnami ici,

Vous avez raison. L'outil de configuration Bitnami HTTPS utilise Lego, un client Let's Encrypt écrit en Go. Notre outil lance le serveur lego (pour que Let's Encrypt le vérifie) en utilisant le port 80. Ce port devrait donc être accessible depuis l'extérieur de votre réseau. Si ce n'est pas le cas, vous devrez utiliser un autre outil (vous pouvez utiliser lego directement) et définir le port que vous souhaitez utiliser pour effectuer la vérification. Par exemple, vous pouvez télécharger l'outil lego et essayer d'utiliser le port 81 en exécutant ces commandes :

cd /tmp
curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
tar xf lego_v3.6.0_linux_amd64.tar.gz
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego

sudo /opt/bitnami/ctlscript.sh stop

sudo /opt/bitnami/letsencrypt/lego --http --http.port 81 --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="www.DOMAIN" --path="/opt/bitnami/letsencrypt" run

Cela devrait générer un nouveau certificat. Vous devrez les configurer plus tard dans la configuration d'Apache. Vous pouvez trouver plus d'informations ici

https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/#alternative-approach

0voto

hbquikcomjamesl Points 199

J'ai fini par utiliser l'"approche alternative" du lien fourni par M. Martos, avec quelques modifications non mentionnées dans les instructions :

Si le mappage de port est impliqué (par exemple, 8443 apparaissant comme 443 depuis l'extérieur, via iptables), alors essayez d'ajouter les paramètres "--http.port :80 --tls.port :8443" (ou tout ce que votre mappage requiert) à l'invocation de lego. Une fois ces paramètres ajoutés, Lego a parfaitement fonctionné. Notez également que l'arrêt des serveurs est important lorsque vous utilisez Lego : il doit prendre brièvement le contrôle des ports.

De plus, si vous devez ensuite mettre les certificats à la disposition d'un serveur Tomcat et que ce dernier les rejette, vous pouvez utiliser openssl pour les convertir en un keystore PKCS12 (grâce au développeur de Tomcat Christopher Schultz, sur le serveur de liste des utilisateurs de Tomcat), ce qui est beaucoup plus facile à gérer pour Tomcat.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X