{{tag>apache apache2 ssl}}
====== Apache et SSL ======
SSL permet de chiffrer les communications entre le client et le serveur. On cherche ici activer SSL sur un hôte virtuel apache. Pour cela il faut:
* Générer un certificat pour le serveur
* Adapter la configuration de l’hôte virtuel
* Activer le module adéquat
===== Certificats =====
Le certificat électronique est utilisé par le processus de chiffrement. Il permet d'identifier le serveur et garantie que la communication a bien lieue entre le client et le serveur.
Le certificat contient:
* Des informations sur le serveur: localisation, propriétaire etc
* La clé publique du serveur permettant au client de chiffrer les transmissions à destination du serveur.
* Le certificat est signé (on distingue l'auto-signature et la signature par un tiers de confiance).
==== Certificat signé par un tiers de confiance ====
Le tiers de confiance est un organisme spécialisé garantissant l'identité du propriétaire du certificat. La plupart du temps l'obtention d'un certificat signé par un tiers de confiance est un service payant. Il existe néanmoins des solutions gratuites:
* CA Cert, il faudra cependant installer le certificat racine dans le navigateur.
* Let's encrypt
==== Certificat CA Cert ====
Pour générer le certificat, CA Cert demandera le CSR(Certificat Signig Request), on commence par générer le CSR:
Créer le CSR
Générer la clé RSA:
cd /etc/apache2
mkdir private
chmod 700 private
cd private
openssl genrsa 2048 > www.example.com.key
chmod 400 www.example.com.key
Créer la demande CSR avec la clé précédemment générée
openssl req -new -key www.exemple.com.key > www.exemple.com.csr
La commande précédente lance un script interactif qui demande à l'utilisateur de saisir les informations nécessaire à la génération du CSR
CA Cert est une organisation à but non lucratif proposant de générer des certificats. Le service est gratuit et promeut la sécurisation des échanges informatique chiffrés. Pour obtenir un certificat se rendre à l'URL http://www.cacert.org/ et dans le cadre de menu cliquer sur le lien **S'incrire**.
* Compléter le formulaire de création de compte
* Une fois le compte validé, se connecter
* Dans le menu section Domaines -> Ajouter
* Dans le menu section Certificats de serveur -> Nouveau
==== Certificat auto-signé ====
Pour des sites web à caractère non marchand, l'auto-signature est une pratique répandue ne posant pas de problème.
$ sudo apt-get install ssl-cert
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/vhost1.domain.pem
==== Let's Encrypt ====
Pour Ubuntu 16.04 Let's encrypt permet d'obtenir facilement et gratuitement des certificats validés par un tiers de confiance.
===== Configurer l'hote virtuel apache =====
Copier le fichier de configuration defautlt-ssl et apporter les modifications propres a l'instance et
$ sudo cp default-ssl vhost1-ssl
Mettre à jour la directive **SSLCertificateFile** en indiquant le nom du certificat précédemment généré.
SSLCertificateFile /etc/ssl/private/vhost1.domain.pem
Activer le module SSL
$ sudo a2enmod ssl
$ sudo a2enssite vhost1-ssl
$ sudo service apache2 reload
===== Références =====
* https://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl
* https://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique
* https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04