Sécuriser votre site web avec SSL sous Apache

sudo mkdir /etc/sslPuis j’ai généré la clé en 2048 bits
openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus ..........................++++++ .......++++++ e is 65537 (0x10001) Enter pass phrase for server.key:
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure mv server.key.insecure server.keyUne fois la clé générée, il me reste plus qu’à générer mon CSR
openssl req -new -key server.key -out server.csrLors de la création du CSR, vous devez renseigner quelques informations, le plus important est de bien stipuler le nom de domaine auquel vous souhaitez associer votre certificat, ou l’adresse IP public si vous n’avez pas de nom de domaine.
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:France Locality Name (eg, city) []: Hettange Grande Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kaizer Onion Organizational Unit Name (eg, section) []: Kaizer Onion Common Name (e.g. server FQDN or YOUR name) []: www.kaizeronion.com Email Address []:your_email@kaizeronion.comMaintenant votre clé ainsi que votre CSR sont dans le dossier /etc/apache2/ssl Il faut se rendre sur le site de EuroDNS et générer votre certificat en précisant le CSR. Lors de la génération, pour s’assurer que vous être bien le titulaire du domaine en question, on va vous demander de placer une balise header sur votre page d’accueil. Nous arrivons à la dernière étape, la mise en place du certificat sur votre serveur Apache. Normalement, vous devriez avoir un fichier de config pour votre site actuel dans le dossier /etc/apache2/sites-available/ qui doit être actif via un lien symbolique dans le dossier /etc/apache2/sites-enabled Par défaut, vous avez un exemple de configuration SSL dans le fichier default-ssl.conf
vi /etc/apache2/sites-available/default-ssl.conf
ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/server.pem SSLCertificateKeyFile /etc/ssl/server.keyPar rapport à votre fichier de config standard, seul la localisation du certificat ainsi que de sa clé sont ajoutés. Il vous faudra sans doute ajouter le certificat intermédiaire via la syntaxe suivante:SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
SSLCertificateChainFile /etc/apache2/ssl/intermediate.pemAfin de se prémunir des nombreuses vulnérabilités présentent dans SSL (FREAK, Crime, RC4, Heartbleed, Poodle, etc.) je vous conseille de: – désactiver les cipher SSLv3 et SSLv2 (Poodle)
SSLProtocol All -SSLv2 -SSLv3– désactiver le support des ciphers RC4 et MD5
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4– désactiver la compression SSL (Crime Attack)
SSLCompression off– activer le HTTP Strict Only
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"– activer le Perfect Forward Secrecy
SSLHonorCipherOrder onPour éviter de rendre disponible votre site en HTTP, vous devez mettre en place une redirection sur le virtualhost:80 Au final vous devriez obtenir un fichier de configuration comme celui-ci:
Il ne vous reste plus qu’à sauvegarder et activer votre fichier de config.ServerName www.kaizeronion.com ServerAlias kaizeronion.com Redirect permanent / https://www.kaizeronion.com ServerSignature Off SSLEngine on DocumentRoot /var/www/kaizeronion ServerName www.kaizeronion.com ServerAlias kaizeronion.com #Security SSLProtocol All -SSLv2 -SSLv3 SSLCompression off SSLHonorCipherOrder on SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" # Error Log ErrorLog /var/log/apache2/error_log_kaizeronion Customlog /var/log/apache2/access_log_kaizeronion combined SSLCertificateFile /etc/ssl/server.pem SSLCertificateKeyFile /etc/ssl/server.key SSLCertificateChainFile /etc/ssl/intermediate.pem SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
a2ensite default-ssl.confUn redémarrage du service est nécessaire pour que les changements soient pris en compte
service apache2 restartMaintenant, vous allez profiter de votre site web en https. Par acquis de conscience, vous pouvez lancer un test sur Qualys SSL Labs
Tags: Beast, Crime, FREAK, HeartBleed, Perfect Forward Secrecy, PFS, SSL
Trackback from your site.