Une connexion via SSL / TLS protège le trafic de données en envoyant des paquets cryptés. Pour pouvoir établir une telle connexion, vous avez besoin d’un certificat d’un fournisseur de confiance, qui coûte généralement plus de 20 $ par an. Grace à Let’s Encrypt Initiative, ces certificats SSL sont désormais accessibles à tous, gratuitement. Le gros avantage est que le certificateur est classé comme fiable dans les navigateurs courants.
Dans cet article, je voudrais montrer comment utiliser les serveurs Web Node.JS / Apache, etc. Les applications (FTP, etc.) peuvent créer un certificat SSL Raspberry Pi.
Préparation
Pour pouvoir utiliser un certificat SSL / TLS de manière raisonnable, un serveur Web ou une application doit être installé sur le Raspberry Pi 3, pour lequel par exemple une connexion HTTP (S) doit être établie. Vous pouvez créer un serveur Node.JS.
De plus, je recommande fortement d’installer un serveur DNS dynamique si votre Raspberry Pi n’a pas d’adresse IP statique. Les fournisseurs d’accès Internet ne délivrent généralement une adresse IP statique aux ménages que moyennant un supplément. Une adresse IP dynamique change au moins une fois par jour, c’est-à-dire qu’une autre adresse IP devrait être récupérée.
Ce problème peut être évité avec un service dDNS, car une connexion à un domaine (gratuit) est établie dès que l’adresse IP dynamique change. Vous pouvez donc appeler ce domaine au lieu de changer l’adresse IP et le service dDNS s’occupe de tout le reste. De plus, votre domaine correct (si vous en avez un) peut également pointer vers ce «domaine intermédiaire» via des entrées DNS.
Si vous exécutez un serveur Apache, vous pouvez le terminer de la manière suivante. Pour terminer un serveur Node.JS, il suffit de tuer l’application (si nécessaire, mettez fin au processus d’arrière-plan).
sudo service apache2 stop
Assurez-vous également qu’en plus du port 80, le port 443 de votre routeur (recommandation: FRITZ! Boîte) est également approuvé pour l’adresse IP interne du Raspberry Pi.
Création d’un certificat SSL Let’s Encrypt
Nous utilisons Git pour télécharger l’outil de création de certificats. Cela est déjà inclus dans les nouvelles versions de Raspbian. Si ce n’est pas sur votre système d’exploitation (par exemple une version Minimal Raspbian), vous pouvez simplement l’installer:
sudo apt-get install git
Maintenant, nous chargeons les fichiers dans notre répertoire personnel et allons dans ce dossier:
cd ~
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
Vous avez maintenant besoin de tous les domaines auxquels ce certificat doit s’appliquer. Si vous avez, par exemple, des sous-domaines ou si votre domaine est appelé avec et sans «www», vous pouvez tous les spécifier immédiatement. Dans mon exemple, je veux juste créer le certificat SSL pour mon domaine, que j’ai obtenu de NoIP. S’il y a plusieurs domaines, vous devez d’abord entrer le domaine principal.
La commande pour créer le certificat Let’s Encrypt est la suivante (remplacer les domaines et le courrier):
./letsencrypt-auto -d FIRST_DOMAIN -d SECOND_DOMAIN --redirect -m YOUR_MAIL
le --redirect
Le paramètre spécifie que les connexions HTTP normales sont automatiquement transmises à HTTPS. L’adresse e-mail est nécessaire pour nous contacter ou si le certificat doit être restauré un jour.
Conseil: Si vous exécutez un serveur Apache, vous pouvez également laisser l’outil définir tous les autres paramètres en ajoutant --apache
paramètre.
Il vous sera maintenant demandé de lire et d’accepter les conditions d’utilisation.
Avec le certonly
vous pouvez également spécifier que seuls les certificats doivent être créés. Dans le dossier «/ etc / letsencrypt / live /», il y a un nouveau dossier avec le nom de notre domaine principal. Quatre fichiers clés sont nécessaires. Selon l’application, l’installation des certificats SSL est quelque peu différente. Dans Node.JS, le certificat doit être par exemple chargé par code. Vous pouvez découvrir ici comment fonctionne la configuration manuelle d’Apache2.
Soit dit en passant: si vous avez besoin d’aide ou souhaitez voir tous les autres paramètres de l’outil, vous pouvez le faire facilement avec ./letsencrypt-auto --help all
Renouveler le certificat SSL
Tous les certificats Let’s Encrypt ont une durée d’exécution de 3 mois. Après cette période, ils ont expiré et doivent être renouvelés. Le renouvellement du certificat SSL Raspberry Pi est très simple (n’oubliez pas de régler):
./letsencrypt-auto -d FIRST_DOMAIN -d SECOND_DOMAIN --redirect -m YOUR_MAIL --agree-tos --renew-by-default
Ici le paramètre --renew-by-default
est le facteur décisif. Les autres paramètres (supplémentaires) sont identiques à ceux que nous avons spécifiés lors de leur création.
Maintenant, cependant, il est vrai qu’en fonctionnement continu, vous ne voulez pas nécessairement penser à mettre à jour le certificat tous les 3 mois. Par conséquent, il y a une petite astuce: si le Raspberry Pi est (presque) toujours en fonctionnement de toute façon, nous pouvons mettre à jour le certificat plus tôt, par exemple chaque mois. Pour exécuter cela automatiquement, nous utilisons Cron:
sudo crontab -e
À la fin de ce fichier, nous ajoutons la ligne suivante (adaptée comme ci-dessus):
0 1 2 * * /maison/pi/permet de crypter/permet de crypter–auto –ré FIRST_DOMAIN –ré SECOND_DOMAIN –réorienter –m TON COURRIER –se mettre d’accord–tos –renouveler–par–défaut |
Cela démarrera l’outil le 1er de chaque mois à 02h00 et renouvellera notre certificat SSL Raspberry Pi.
Test du certificat SSL Raspberry Pi
Si le service DNS dynamique est en cours d’exécution et que votre serveur Web est redémarré (sudo /etc/init.d/apache2 start
), vous pouvez désormais tester dans le navigateur si votre certificat a été reconnu. Pour ce faire, ouvrez simplement le domaine avec https: // au début. Avec apache2 en particulier, il est important que le fichier /etc/apache2/ports.conf
n’a qu’une seule entrée qui utilise le port 443 (commentez toutes les autres):
Listen 443
Le certificat doit maintenant être affiché dans le navigateur:
Beaucoup plus de détails peuvent également être trouvés dans le Encryptons la documentation.