GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Premiers pas avec Lets Encrypt SSL Certificates sur Ubuntu

Ce tutoriel vous guidera dans votre toute première configuration d'un site Web SSL avec la certification Let's Encrypt. Let's Encrypt est une nouvelle autorité SSL qui fournit des certificats SSL gratuits. Nous allons utiliser deux tutoriels existants ("Comment configurer un site Web SSL intermédiaire compatible avec le certificat Let's Encrypt" et "The Perfect Server - Ubuntu 15.10 (Wily Werewolf) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3").

La configuration décrite ici est compatible avec n'importe quel serveur Ubuntu LAMP, vous pouvez donc également utiliser celui-ci comme configuration de base.

Ce didacticiel vous montrera comment configurer Let's Encrypt sur des serveurs sans ISPConfig 3 car il y aura bientôt une implémentation directe du service Let's Encrypt dans la prochaine version d'ISPConfig 3 (version 3.1). Donc, si vous prévoyez d'utiliser ISPConfig, attendez la version 3.1 et aussi un nouveau tutoriel.

Création du site Web

La première étape consiste à créer la configuration et le répertoire du site Web et à activer SSL (Apache mod_ssl) pour celui-ci. C'est à vous de décider si vous utilisez la configuration par défaut pour un site Web sur un serveur ou si vous prévoyez d'utiliser plusieurs vhosts pour héberger plusieurs domaines. Pour une utilisation plus fiable et évolutive, je vais créer une configuration vhost pour mon domaine "laboratoire" isp1.cloudapp.net à partir d'Azure.

Tous les vhosts sont stockés dans le répertoire /etc/apache2/sites-available par défaut sur Ubuntu et Debian. Exécutez la commande suivante pour récupérer une liste des fichiers de configuration vhost existants.

ls -l /etc/apache2/sites-available/

Ma sortie ressemble à ceci :

[email protected]:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

Nous pouvons maintenant utiliser le fichier de configuration "par défaut" pour le cloner et le modifier ou nous pouvons utiliser notre propre configuration. Je préfère utiliser ma propre configuration comme je le fais depuis de nombreuses années, alors créons un nouveau vhost en créant le fichier :

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

Dans ce fichier collez le contenu suivant :

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net

DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

</VirtualHost>

<VirtualHost *:443>

ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

Remplacez le nom de domaine par votre domaine partout où il se trouve et enregistrez le fichier. Pour activer la configuration, lancez :

a2ensite isp1.cloudapp.net.conf

Créez maintenant les dossiers pour le site Web :

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

Redémarrez apache pour appliquer la nouvelle configuration :

sudo service apache2 restart

Nous devons maintenant générer les fichiers de certificat.

Installez Let's Encrypt et générez votre premier certificat SSL

  Je préfère utiliser la connexion root pour l'administration au lieu d'exécuter sudo avant chaque commande, alors passons à l'utilisateur root :

sudo su

Accédez à votre répertoire d'accueil racine :

cd ~root

Installez git pour récupérer les fichiers du référentiel git de Let's Encrypt :

apt-get install git

Clonez maintenant le dépôt git de Let's Encrypt :

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

Accédez à votre nouveau dossier Letsencrypt :

cd letsencrypt

Et demandez votre certificat SSL :

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

Si vous demandez un certificat pour le domaine maître (domaine à 1 niveau alias cloudapp.net), utilisez le paramètre -d deux fois. Avec et sans préfixe www comme ceci :

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

Si vous ne le faites pas, le certificat ne sera pas valide pour les visiteurs ouvrant votre site avec le préfixe www.

Vous pouvez également ajouter d'autres sous-domaines à un certificat. Par exemple, si votre sous-domaine admin.cloudapp.net correspond au même site (le même dossier sur le serveur), vous devez également l'ajouter à ce certificat. Malheureusement, vous ne pouvez pas utiliser de caractère générique comme (*.cloudapp.net) avec let's encrypt.

Let's Encrypt mettra automatiquement à jour toutes les dépendances et vous guidera tout au long de sa configuration. Tout ce que vous avez à faire est d'attendre la fenêtre d'invite vous demandant votre adresse e-mail. Cette adresse est utilisée uniquement pour récupérer les données perdues.

Vos nouvelles clés sont maintenant stockées dans /etc/letsencrypt/ par défaut. Nous allons les lier à notre répertoire de sites Web afin de pouvoir gérer les clés plus tard.

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

Vous devriez maintenant pouvoir accéder à votre site Web avec SSL. Let's Encrypt vous informera automatiquement de l'expiration des certificats à temps en vous envoyant un e-mail à l'adresse que vous avez fournie lors de l'installation de Let's Encrypt.


Ubuntu
  1. Premiers pas avec les conteneurs LXD sur Ubuntu 16.04

  2. Sécurisez Nginx avec Lets Encrypt sur Ubuntu 20.04

  3. Sécurisez Apache avec Lets Encrypt sur Ubuntu 20.04

  4. Comment configurer Apache Subversion avec Lets encrypt SSL sur Ubuntu 18.04

  5. Premiers pas avec le client SSL Lets Encrypt d'acme.sh

Comment installer ProjectSend avec Apache et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer Moodle avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer MediaWiki avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer Gitea avec Nginx et Lets Encrypt SSL gratuit sur Ubuntu 20.04

Comment installer les certificats SSL Lets Encrypt sur Ubuntu 18.04

Premiers pas avec le système de fichiers ZFS sur Ubuntu 19.10