Difference between revisions of "https/fr"
(https/fr page) |
(https/fr, pass 1) |
||
Line 2: | Line 2: | ||
{{languages|https}} | {{languages|https}} | ||
+ | Le tutoriel se base sur une installation sur un serveur Gnu/Linux ubuntuServer 16.04, s’applique à Debian et ses dérivés, à adapter aux autres serveurs. | ||
+ | ==Préalables== | ||
+ | On présume que Geneweb est déjà installé et accessible soit sur votre serveur "Apache2", soit en mode service via le port 2317. | ||
+ | Nous utiliserons "domaine ou www.domaine" pour votre nom de domaine ou votre ip si vous n’avez pas de nom de domaine. | ||
+ | Exemple de votre adresse actuelle : | ||
+ | http://www.domaine.fr/cgi-bin/geneweb.cgi | ||
+ | ou | ||
+ | http://www.domaine.fr:2317/ | ||
+ | Ouvrez un terminal. Dans le tutoriel on utilisera "nano" comme éditeur de texte en ligne de commande, vous pouvez utiliser VI ou autres selon vos habitudes. | ||
+ | Les commandes doivent-être effectuées en mode administrateur "root" alors tapez "sudo -s" pour Ubuntu ou "su root" sous Debian… Puis votre mot de passe. | ||
+ | Attention, vous resterez en mode administrateur tant que vous n’aurez pas tapé "exit" | ||
+ | |||
+ | ==Installer les certificats Let’s Encrypt== | ||
+ | Pour récupérer les certificats, il faut commencer par installer "git" (vous êtes déjà en mode administrateur). | ||
+ | apt-get install git | ||
+ | git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt –depth=1 | ||
+ | "--depth=1" Je ne souhaite pas récupérer tout l'historique du site. | ||
+ | On génère les certificats | ||
+ | /opt/letsencrypt/letsencrypt-auto --apache -d domaine.fr -d www.domaine.fr | ||
+ | Si vous avez plusieurs domaines, sinon vous pouvez faire simplement: | ||
+ | /opt/letsencrypt/letsencrypt-auto | ||
+ | Vos certificats on été créés et se trouvent dans : /etc/letsencrypt/live/ | ||
+ | |||
+ | ==Renouveler les certificats Let’s Encrypt== | ||
+ | ATTENTION, le certificat n'est valable que 90 jours. On peut le renouveler avec la commande: | ||
+ | /opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d domaine.fr -d www.domaine.fr | ||
+ | L’idéal est de rendre le renouvellement automatique, Erika Heidi a créé un script simplifiant la tâche, il s'agit de le-renew.sh | ||
+ | Dans les commandes qui suivent il s’agit de récupérer ce script, le rendre exécutable et le placer dans la "crontab" pour le renouvellement automatisé. | ||
+ | curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew | ||
+ | chmod +x /usr/local/sbin/le-renew | ||
+ | crontab -e | ||
+ | 0 6 * * 1 /usr/local/sbin/le-renew domaine.fr >> /var/log/le-renew.log | ||
+ | Chaque lundi à 6:00, la validité du certificat en question sera vérifié, soit il est toujours valable sinon il demandera le renouvellement. | ||
+ | |||
+ | ==Https pour Geneweb sur serveur Apache== | ||
+ | Configurer le VirtualHost pour l'accès https | ||
+ | Allez dans /etc/apache2/sites-available et modifier les VirtualHost | ||
+ | cd /etc/apache2/sites-available | ||
+ | nano domainessl.fr | ||
+ | La configuration que j'ai mise | ||
+ | <pre> | ||
+ | <VirtualHost *:443> | ||
+ | ... | ||
+ | SSLProtocol -ALL -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 | ||
+ | SSLHonorCipherOrder On | ||
+ | SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/letsencrypt/live/domaine.fr /fullchain.pem | ||
+ | SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr /privkey.pem | ||
+ | ... | ||
+ | </VirtualHost> | ||
+ | </pre> | ||
+ | |||
+ | Configurer le VirtualHost http pour une redirection https | ||
+ | cd /etc/apache2/sites-available | ||
+ | nano domaine.fr | ||
+ | La configuration que j'ai mise | ||
+ | <pre> | ||
+ | <VirtualHost *:80> | ||
+ | ... | ||
+ | RewriteEngine on | ||
+ | RewriteRule ^ https://domaine.fr%{REQUEST_URI} [L,QSA,R=permanent] | ||
+ | ... | ||
+ | </VirtualHost> | ||
+ | </pre> | ||
+ | |||
+ | ==Https pour Geneweb en mode service via le port 2317== | ||
+ | Pour utiliser Geneweb en mode service en https il faut l’encapsuler, pour cela nous allons utiliser Stunnel4. | ||
+ | Commençons par installer Stunnel4 | ||
+ | apt-get install stunnel4 | ||
+ | Nous allons créer un fichier de configuration dans lequel nous allons déclarer les certificats Let’s Encrypt que nous avons créés, voir point 2. | ||
+ | Un fichier de configuration type existe dans | ||
+ | {{c|/usr/share/doc/stunnel4/examples/stunnel.conf-sample}} | ||
+ | Mais il faudra le modifier. | ||
+ | cd /etc/stunnel | ||
+ | nano stunnel.conf | ||
+ | Notre fichier de configuration | ||
+ | <pre> | ||
+ | ; ************************************************************************** | ||
+ | ; * Options générales * | ||
+ | ; ************************************************************************** | ||
+ | ; Il est recommandé de changer les privilèges utilisateur et groupe | ||
+ | ;setuid = stunnel4 | ||
+ | ;setgid = stunnel4 | ||
+ | ; un chroot pour un peu plus de sécurité | ||
+ | ;chroot = /var/lib/stunnel4/ | ||
+ | ; Le fichier PID sera créé dans le chroot | ||
+ | ;pid = /var/run/stunnel.pid | ||
+ | ; Utile de mettre dans les logs pour suivre en cas de bug | ||
+ | foreground = yes | ||
+ | debug = info | ||
+ | output = /var/log/stunnel4/stunnel.log | ||
+ | ; Enable FIPS 140-2 mode if needed for compliance | ||
+ | ;fips = yes | ||
+ | ; ************************************************************************** | ||
+ | ; * Service defaults may also be specified in individual service sections * | ||
+ | ; ************************************************************************** | ||
+ | ; Enable support for the insecure SSLv3 protocol | ||
+ | options = -NO_SSLv3 | ||
+ | ; These options provide additional security at some performance degradation | ||
+ | options = SINGLE_ECDH_USE | ||
+ | options = SINGLE_DH_USE | ||
+ | ; ************************************************************************** | ||
+ | ; * Include all configuration file fragments from the specified folder * | ||
+ | ; ************************************************************************** | ||
+ | ;include = /etc/stunnel/conf.d | ||
+ | ; ************************************************************************** | ||
+ | ; * Service definitions (remove all services for inetd mode) * | ||
+ | ; ************************************************************************** | ||
+ | [geneweb] | ||
+ | accept = 22317 | ||
+ | connect = 2317 | ||
+ | cert=/etc/letsencrypt/live/domaine.fr/fullchain.pem | ||
+ | key=/etc/letsencrypt/live/domaine.fr/privkey.pem | ||
+ | </pre> | ||
+ | |||
+ | Modifiez l'utilisateur et le groupe. | ||
+ | cd .. | ||
+ | chown -Rf stunnel4:stunnel4 stunnel/ | ||
+ | Maintenant nous allons activer stunnel | ||
+ | nano /etc/default/stunnel4 | ||
+ | Modifiez l’option suivante comme ci-dessous : | ||
+ | ENABLED=1 | ||
+ | On redémarre Stunnel | ||
+ | /etc/init.d/stunnel4 stop | ||
+ | /etc/init.d/stunnel4 start | ||
+ | ou plus simplement | ||
+ | /etc/init.d/stunnel4 restart | ||
+ | Vous pouvez dès maintenant vous connecter avec l’adresse similaire à ci-dessous | ||
+ | <nowiki>https://www.domaine.fr:22317</nowiki> | ||
+ | ou | ||
+ | <nowiki>https://domaine.fr:22317</nowiki> | ||
+ | ou encore | ||
+ | <nowiki>https://IP:22317</nowiki> | ||
+ | En fonction de votre configuration. | ||
+ | |||
+ | ==Précautions== | ||
+ | Si vous utilisez IPTables ou autres pares-feux adaptez-le. | ||
+ | Vous êtes auto-hébergé modifiez aussi la redirection de ports sur votre box. | ||
+ | Exemple des règle pour IpTables : | ||
+ | /sbin/iptables -A INPUT -p tcp --dport 22317 -m state --state NEW,ESTABLISHED -j ACCEPT | ||
+ | /sbin/iptables -A OUTPUT -p tcp --sport 22317 -m state --state ESTABLISHED -j ACCEPT | ||
+ | |||
+ | Proposé par Sima78 | ||
[[Category:Manuel]] | [[Category:Manuel]] |
Revision as of 00:46, 23 January 2017
![]() |
English • français |
---|
Le tutoriel se base sur une installation sur un serveur Gnu/Linux ubuntuServer 16.04, s’applique à Debian et ses dérivés, à adapter aux autres serveurs.
Contents
Préalables
On présume que Geneweb est déjà installé et accessible soit sur votre serveur "Apache2", soit en mode service via le port 2317. Nous utiliserons "domaine ou www.domaine" pour votre nom de domaine ou votre ip si vous n’avez pas de nom de domaine. Exemple de votre adresse actuelle :
http://www.domaine.fr/cgi-bin/geneweb.cgi
ou
http://www.domaine.fr:2317/
Ouvrez un terminal. Dans le tutoriel on utilisera "nano" comme éditeur de texte en ligne de commande, vous pouvez utiliser VI ou autres selon vos habitudes. Les commandes doivent-être effectuées en mode administrateur "root" alors tapez "sudo -s" pour Ubuntu ou "su root" sous Debian… Puis votre mot de passe. Attention, vous resterez en mode administrateur tant que vous n’aurez pas tapé "exit"
Installer les certificats Let’s Encrypt
Pour récupérer les certificats, il faut commencer par installer "git" (vous êtes déjà en mode administrateur).
apt-get install git git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt –depth=1
"--depth=1" Je ne souhaite pas récupérer tout l'historique du site. On génère les certificats
/opt/letsencrypt/letsencrypt-auto --apache -d domaine.fr -d www.domaine.fr
Si vous avez plusieurs domaines, sinon vous pouvez faire simplement:
/opt/letsencrypt/letsencrypt-auto
Vos certificats on été créés et se trouvent dans : /etc/letsencrypt/live/
Renouveler les certificats Let’s Encrypt
ATTENTION, le certificat n'est valable que 90 jours. On peut le renouveler avec la commande:
/opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d domaine.fr -d www.domaine.fr
L’idéal est de rendre le renouvellement automatique, Erika Heidi a créé un script simplifiant la tâche, il s'agit de le-renew.sh Dans les commandes qui suivent il s’agit de récupérer ce script, le rendre exécutable et le placer dans la "crontab" pour le renouvellement automatisé.
curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew chmod +x /usr/local/sbin/le-renew crontab -e 0 6 * * 1 /usr/local/sbin/le-renew domaine.fr >> /var/log/le-renew.log
Chaque lundi à 6:00, la validité du certificat en question sera vérifié, soit il est toujours valable sinon il demandera le renouvellement.
Https pour Geneweb sur serveur Apache
Configurer le VirtualHost pour l'accès https Allez dans /etc/apache2/sites-available et modifier les VirtualHost
cd /etc/apache2/sites-available nano domainessl.fr
La configuration que j'ai mise
<VirtualHost *:443> ... SSLProtocol -ALL -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 SSLHonorCipherOrder On SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS SSLEngine on SSLCertificateFile /etc/letsencrypt/live/domaine.fr /fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr /privkey.pem ... </VirtualHost>
Configurer le VirtualHost http pour une redirection https
cd /etc/apache2/sites-available nano domaine.fr
La configuration que j'ai mise
<VirtualHost *:80> ... RewriteEngine on RewriteRule ^ https://domaine.fr%{REQUEST_URI} [L,QSA,R=permanent] ... </VirtualHost>
Https pour Geneweb en mode service via le port 2317
Pour utiliser Geneweb en mode service en https il faut l’encapsuler, pour cela nous allons utiliser Stunnel4. Commençons par installer Stunnel4
apt-get install stunnel4
Nous allons créer un fichier de configuration dans lequel nous allons déclarer les certificats Let’s Encrypt que nous avons créés, voir point 2.
Un fichier de configuration type existe dans
/usr/share/doc/stunnel4/examples/stunnel.conf-sample
Mais il faudra le modifier.
cd /etc/stunnel nano stunnel.conf
Notre fichier de configuration
; ************************************************************************** ; * Options générales * ; ************************************************************************** ; Il est recommandé de changer les privilèges utilisateur et groupe ;setuid = stunnel4 ;setgid = stunnel4 ; un chroot pour un peu plus de sécurité ;chroot = /var/lib/stunnel4/ ; Le fichier PID sera créé dans le chroot ;pid = /var/run/stunnel.pid ; Utile de mettre dans les logs pour suivre en cas de bug foreground = yes debug = info output = /var/log/stunnel4/stunnel.log ; Enable FIPS 140-2 mode if needed for compliance ;fips = yes ; ************************************************************************** ; * Service defaults may also be specified in individual service sections * ; ************************************************************************** ; Enable support for the insecure SSLv3 protocol options = -NO_SSLv3 ; These options provide additional security at some performance degradation options = SINGLE_ECDH_USE options = SINGLE_DH_USE ; ************************************************************************** ; * Include all configuration file fragments from the specified folder * ; ************************************************************************** ;include = /etc/stunnel/conf.d ; ************************************************************************** ; * Service definitions (remove all services for inetd mode) * ; ************************************************************************** [geneweb] accept = 22317 connect = 2317 cert=/etc/letsencrypt/live/domaine.fr/fullchain.pem key=/etc/letsencrypt/live/domaine.fr/privkey.pem
Modifiez l'utilisateur et le groupe.
cd .. chown -Rf stunnel4:stunnel4 stunnel/
Maintenant nous allons activer stunnel
nano /etc/default/stunnel4
Modifiez l’option suivante comme ci-dessous :
ENABLED=1
On redémarre Stunnel
/etc/init.d/stunnel4 stop /etc/init.d/stunnel4 start
ou plus simplement
/etc/init.d/stunnel4 restart
Vous pouvez dès maintenant vous connecter avec l’adresse similaire à ci-dessous
https://www.domaine.fr:22317
ou
https://domaine.fr:22317
ou encore
https://IP:22317
En fonction de votre configuration.
Précautions
Si vous utilisez IPTables ou autres pares-feux adaptez-le. Vous êtes auto-hébergé modifiez aussi la redirection de ports sur votre box. Exemple des règle pour IpTables :
/sbin/iptables -A INPUT -p tcp --dport 22317 -m state --state NEW,ESTABLISHED -j ACCEPT /sbin/iptables -A OUTPUT -p tcp --sport 22317 -m state --state ESTABLISHED -j ACCEPT
Proposé par Sima78