Configuration du serveur Apache pour utiliser SSL
Page enfant de Creating a Webserver on CC-Cloud
Le terme SSL réfère à la fois au protocole Transport Layer Security (TLS) et à son prédécesseur Secure Sockets Layer (SSL). Ils servent au chiffrement des données communiquées sur les réseaux. Le chiffrement protège les données critiques qui transitent sur l'Internet, par exemple les mots de passe.
Certificat signé
Un certificat signé par une Autorité de certification (CA, pour Certificate Authority) permet aux utilisateurs d'un site Web de s'assurer qu'un tiers (le CA) confirme l'identité du site et prévient ce qu'on appelle une attaque de l'homme du milieu.
Plusieurs CAs exigent des frais annuels, contrairement à let's encrypt. Un certificat SSL signé par ce CA peut être créé et renouvelé automatiquement par l'outil Certbot qui configure aussi votre serveur Web pour l'utilisation de ce même certificat. Lisez la documentation certbot.
Certificat autosigné
Cette section décrit la procédure de création d'un certificat SSL autosigné et la configuration d'Apache pour le chiffrement. Il n'est pas recommandé d'utiliser un certificat autosigné sur un site de production d'importance; ces certificats conviendront cependant à la production sur des sites restreints à usage local, ou encore dans un environnement de test.
Les étapes suivantes décrivent la procédure sous Ubuntu. On trouvera certaines différences sous d'autres systèmes d'exploitation, notamment en ce qui a trait aux commandes, aux localisations ou aux noms des fichiers de configuration.
- Activer le module SSL
Installez Apache (voir Installing Apache), puis activez le module SSL ainsi :[name@server ~]$ sudo a2enmod ssl [name@server ~]$ sudo service apache2 restart
- Créer un certificat SSL autosigné
[name@server ~]$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt
Si on vous demande une phrase de passe, assurez-vous de relancer la commande avec la syntaxe correcte, y compris l'option
-node
. Vous devrez ensuite répondre aux questions qui suivent, pour lesquelles nous donnons des exemples de réponse.Country Name (2 letter code) [AU]:CA State or Province Name (full name) [Some-State]:Nova Scotia Locality Name (eg, city) []:Halifax Organization Name (eg, company) [Internet Widgits Pty Ltd]:Compute Canada Organizational Unit Name (eg, section) []:ACENET Common Name (e.g. server FQDN or YOUR name) []:XXX-XXX-XXX-XXX.cloud.computecanada.ca Email Address []:<your email>
La réponse à Common Name est la plus importante; il s'agit du nom de domaine de votre serveur. Pour une machine virtuelle sur un nuage de Calcul Canada, remplacez les X dans l'exemple par l'adresse IP flottante associée à la machine virtuelle.
- Définir le propriétaire et les autorisations
Pour définir le propriétaire et les autorisations associés à la clé privés, entrez les commandes[name@server ~]$ sudo chown root:ssl-cert /etc/ssl/private/server.key [name@server ~]$ sudo chmod 640 /etc/ssl/private/server.key
- Configurer Apache pour utiliser le certificat
Modifiez le fichier de configuration SSL avec la commande[name@server ~]$ sudo vim /etc/apache2/sites-available/default-ssl.conf
et remplacez les deux lignes suivantes
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
par les trois lignes
SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key SSLCertificateChainFile /etc/ssl/certs/server.crt
- Renforcer la sécurité
Redirigez les requêtes http vers https; exigez des versions plus à jour de SSL; utilisez de meilleures options de chiffrement, d'abord en modifiant le fichier ainsiet ensuite en ajoutant[name@server ~]$ sudo vim /etc/apache2/sites-available/default-ssl.conf
ServerName XXX-XXX-XXX-XXX.cloud.computecanada.ca SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4 SSLHonorCipherOrder on
dans le bas, à l'intérieur de la balise
<VirtualHost>
; remplacez les X aux deux endroits par l'IP de la machine virtuelle (notez qu'il faut utiliser des tirets dans l'IP plutôt que des points). Entrez une commande de redirection sur le serveur virtuel en modifiant le fichier de configuration du site Web par défaut avecet en ajoutant la ligne[name@server ~]$ sudo vim /etc/apache2/sites-available/000-default.conf
Redirect permanent / https://XXX-XXX-XXX-XXX.cloud.computecanada.ca
à l'intérieur de la balise <VirtualHost>.
- Activer le site sécurisé
[name@server ~]$ sudo a2ensite default-ssl.conf [name@server ~]$ sudo service apache2 restart
Vérifiez que le chemin pour DocumentRoot
correspond au chemin défini dans /etc/apache2/sites-available/000-default.conf
, en autant que SSL s'applique à ce site.