Apache2

De Wiki NCad
Aller à : navigation, rechercher

Écoute sur des ports exotiques

Usage

Internet ---> [#80 | Serveur Web 1 | #80] <-----> [ #80 | Serveur Web 2 ]

Activation du mode Proxy

ICON Terminal.png

sudo a2enmod proxy proxy_http

ICON Terminal.png

sudo service apache restart

  • Remplacer :
DocumentRoot /var/www/monsite.fr/www
  • Par :
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
ProxyPreserveHost On

Certificat SSL

Un certificat SSL permet de crypter les échanges entre le client et le serveur. Ce type de certificat est utilisé par le protocole http sécurisé (https) pour sécurisé les échanges dans le cadre d'échange de données sensibles (paiement en ligne, banque en ligne, sites gouvernementaux).

Les certificat SSL sont délivrés par une autorité dédiée et reconnu de tous. Cela est visible dans le navigateur web où le cas échéant, un message d'avertissement apparaît. Il est possible de générer ses propres certificats sans faire appel aux services d'une autorité. Dans ce cas, on dira que le certificat est auto-signé.

Certificat auto-signé

  • Le certificat est généré par l'utilisateur. Pour pouvoir générer ses propres certificats, il faut installer le paquet openssl.
ICON Terminal.png

sudo apt-get install openssl

  • Génération de la clé ssl. La clé peut avoir les longueurs de 512, 1024 ou 2048. Cependant, on préférera une longueur de 2048 qui est la plus complexe et donc la plus difficile à corrompre. L'algorithme de cryptage utilisé pour créer notre clé est le RSA (algorithme de cryptage asymétrique).
ICON Terminal.png

sudo openssl genrsa -out mon-site.fr.key 2048


ICON Information.png

Le dossier /etc/ssl/private est présent pour contenir vos clés et certificats privés.

  • Ensuite, il s'agit de créer le certificat qui sera récupéré par le navigateur web avec toutes les données relatives à l'autorité fournissant le certificat ainsi que la clé de partage :
ICON Terminal.png

sudo openssl req -new -key mon-site.fr.key -out mon-site.fr.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.



Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NCad Wiki
Organizational Unit Name (eg, section) []:Article SSL
Common Name (e.g. server FQDN or YOUR name) []:www.mon-site.fr
Email Address []:tech@ncad.fr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Une jolie passe phrase pour tout crypter, décrypter !
An optional company name []:Article SSL

  • Enfin, on signe le certificat précédemment crée pour une durée de validité de 1 an (365 jours) :
ICON Terminal.png

sudo openssl x509 -req -days 365 -in mon-site.fr.csr -signkey mon-site.fr.key -out mon-site.fr.crt

Certificat fournie par une autorité

L'autorité fournit la clé privée qui a été cryptée par le mot de passe que vous avez saisie au préalable. Pour éviter que le serveur web ne demande à chaque redémarrage le mot de passe pour pouvoir lire la clé, on va la déchiffrer et la stocker sur le serveur.

  • Récupérez la clé depuis le site de l'autorité et sauvegardez là dans le fichier /etc/ssl/mon-site.fr.key.
  • Nous procédons au décryptage de la clé.
ICON Terminal.png

sudo openssl rsa -in mon-site.fr.key -out mon-site.fr.key

  • Il faut également récupérer le certificat qui a été généré par l'autorité et le sauvegarder dans le fichier /etc/ssl/mon-site.fr.crt.

Maintenant on peut configurer l'hôte virtuel Apache pour utiliser notre certificat et sa clé privée.

Utilisation dans Apache2

Le protocole https écoute sur le port 443. Il faudra donc modifier la configuration d'Apache2 pour répondre aux conditions suivantes :

  • Écouter sur le port 443.
  • Permettre des hôtes virtuels sur le port 443.

Configuration de /etc/apache2/ports.conf

  • Nous allons y ajouter les éléments suivants (activation du module pour les hôtes virtuels et écoute sur le port 443) :
NameVirtualHost *:443
Listen *:443
  • Et, à la fin, si ce dernier n'existe déjà pas :
<IfModule mod_gnutls.c>
   Listen 443
</IfModule>
  • On redémarre Apache2 pour prendre en compte ces modifications :
ICON Terminal.png

sudo service apache2 restart

Création du site web SSL

Dans notre exemple, nous créons le site www.mon-site.fr accessible via https://.

  • Création du fichier /etc/apache2/sites-available/mon-site.fr.conf.
ICON Terminal.png

sudo touch /etc/apache2/sites-available/mon-site.fr.conf

  • On édite le fichier et on y renseigne les lignes suivantes :
<VirtualHost *:443>
 DocumentRoot /var/www/mon-site.fr/www/
 ServerName www.mon-site.fr
 <Directory /var/www/mon-site.fr/www/>
  allow from all
  Options +Indexes
 </Directory>

 SSLEngine on
 SSLCertificateFile /etc/ssl/private/mon-site.fr.crt
 SSLCertificateKeyFile /etc/ssl/private/mon-site.fr.key

</VirtualHost>
  • On redémarre Apache2 pour prendre en compte ces modifications :
ICON Terminal.png

sudo service apache2 restart