|
Recherche |
Introduction SSL (Secure Socket Layer) est destiné à crypter de façon sûre les informations échangées entre deux machines. Sur votre serveur dédié, il peut-être utile d'utiliser SSL afin de protéger des informations sensibles. Vous trouverez plus de détails sur le fonctionnement de SSL ici. Procédure Avant de pouvoir activer/générer un certificat SSL, il faut vérifier que l'option est bien activée sur votre machine. Apache a été compilé par défaut avec SSL, il faut juste lui indiquer qu'il doit le prendre en compte au démarrage. Ensuite vous pouvez soit acheter un certificat officiel, soit générer vous même un certificat. "Un certificat SSL généré par vous même va provoquer une alerte d'authentification !! Ceci ne réduit en rien la sécurité apportée par ce certificat." Activation SSL pour un premier site Attention ! Cette procédure est indiquée pour un système RedHat
[root@crashtest root]# netstat -tanpu | grep ":443" [root@crashtest root]# Aucun résultat. Le serveur n'est donc pas encore activé pour le SSL. Il nous suffit donc de décommenter cette option : [root@crashtest root]# pico /etc/sysconfig/apache Pour décommenter nous retirons le # devant l'option en question : # Uncomment to active SSL OPTIONS="-DSSL" Nous sauvegardons le fichier avec ctrl+x et 'Y' ou 'O' puis entrée et redémarrons Apache afin d'appliquer les changements. [root@crashtest root]# /etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ] [root@crashtest root]# Si nous revérifions maintenant notre port 443 nous verrons que Apache écoute désormais sur le port 443 : [root@crashtest root]# netstat -tanpu | grep ":443" tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3291/httpd
[root@crashtest root]# rpm -qa | grep ssl Vous devez obtenir quelque chose du genre : openssl-devel-0.9.6k-1 openssl-0.9.6k-1 openssl-perl-0.9.6k-1 Si vous avez une version antérieure à celle ci-dessus, par exemple si vous avez Openssl-0.9.6i ce n'est pas bon. Refermez le port 443. Et appliquez les patchs. Vous avez des explications sur ReleasePatchSecurite. Certificat Maintenant que le support SSL est activé et accessible il nous faut un certificat SSL. Vous pouvez en acheter un sur OVH : http://www.ovh.com/fr/particulier/produits/ssl.xml ou générer votre propre certificat comme expliqué ci dessous. Via SSH Placez vous dans le dossier des clefs ssl où vous devriez déjà trouver d'autres clefs SSL. [root@crashtest root]# cd /usr/local/apache/conf/ssl.key et créez votre clef avec la commande suivante : ( il faut bien sûr remplacer amplirikal.com par le domaine pour lequel vous désirez installer le certificat). [root@crashtest ssl.key]# openssl genrsa 1024 > amplirikal.com.key Vous pouvez sécuriser votre fichier en mettant le chmod à 400 : [root@crashtest ssl.key]# chmod -c 400 amplirikal.com.key Maintenant nous allons remplir la demande de certificat (CSR) et répondre aux questions qui vont être posées : [root@crashtest ssl.key]# openssl req -new -key amplirikal.com.key > amplirikal.com.csr Using configuration from /usr/share/ssl/openssl.cnf 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:LILLE Locality Name (eg, city) []:LILLE Organization Name (eg, company) [Internet Widgits Pty Ltd]:amplirikal.com et signer le certificat : [root@crashtest ssl.key]# openssl x509 -req -days 365 -in amplirikal.com.csr -signkey amplirikal.com.key -out amplirikal.com.crt Signature ok subject=/C=FR/ST=LILLE/L=LILLE/O=amplirikal.com/OU=photos/CN=Trinity/Email=raven@united-irc.org Getting Private key [root@crashtest ssl.key]# Il faut encore déplacer vos fichiers dans les bons répertoires : [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/amplirikal.com.crt /usr/local/apache/conf/ssl.crt [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/amplirikal.com.csr /usr/local/apache/conf/ssl.csr et notre certificat est prêt. Configuration Apache Éditons, toujours sous SSH, notre fichier httpd.conf : [root@crashtest root]# pico /httpd.conf Cherchez cette première section et vérifiez que le support SSL est activé : ## ## SSL Support ## ## When we also provide SSL we have to listen to the ## standard HTTP port (see above) and to the HTTPS port ## Listen 80 Listen 443 </IfDefine> Dans la deuxième section au niveau du "NameVirtualHost" on ajoute le l'IP avec le port 443. # # Puis cherchez la troisième section et modifiez le Virtual Host par défaut pour y mettre votre certificat. Attention dans la partie suivante, nous avons coupé les lignes commentées afin que cela ne soit pas trop long. Merci de ne pas effacer ces lignes dans votre fichier mais de simplement éditer les lignes indiquées ci dessous. < < #General setup for the virtual host #SSL Engine Switch: #Enable/Disable SSL for this virtual host. SSLEngine on #Server Certificate: SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt #Server Private Key: SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key Nous avons ci-dessus indiqué l'emplacement du certificat. Maintenant, il faut encore ajouter le virtual host pour le site. Votre virtual host doit donc se situer entre <If Define SSL> et </If Define>. < SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfDefine> Il nous suffit de quitter httpd.conf avec ctrl+x, en confirmant les modifications et de rédemarrer Apache : [root@crashtest www]# /etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ] [root@crashtest www]# Ajout d'un domaine supplementaire Vous pouvez ajouter un domaine supplémentaire en ajoutant simplement aprés le premier </VirtualHost> et avant le </IFDefine> la partie VirtualHost? modifier pour le domaine supplementaire : < SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" </VirtualHost> Conclusion Si vous avez bien effectué les manipulations vous pouvez désormais appeler vos sites via https. N'oubliez pas qu'une alerte va s'afficher si vous utilisez un certificat que vous avez généré vous même et que pour tous les domaines UN SEUL certificat sera utilisé. Comme dans l'exemple de configuration ci-dessus, tous les domaines ajoutés dans la section "VirtualHost" vont donc répondre avec le certificat géneré au début du guide. Si vous avez besoin de mettre plusieurs sites sous https avec des certificats bien distincts, vous avez la possibilité d'utiliser vos adresses IP failover. |