{{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