samedi 23 avril 2016

Configurer Apache2/ SSL avoir un A au test Qualys SSL Labs

Plus de Internet sans HTTPS, plus de configuration d'Apache sans SSL et c'est tant mieux.
Comment faire pour avoir un bon score au test Qualys SSL Labs


Générer KEY et CSR


openssl req -new -newkey rsa:2048 -nodes -keyout monserveur.key -out monserveur.csr

Personnellment je conserve mon CSR, KEY et CRT dans la configuration de Apache : /etc/apache2/ssl
Copier le CSR obtenu a son fournisseur. On trouve maintenant des certificats SSL gratuit, perso j'aime bien Namecheap.com pas cher et rapide.
On recoit le CRT le certificat SSL et son bundle qui permet de valider la chaine de validite.

 

Configuration typique


<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName    www.monserveur.fr
        ServerAlias    monserveur.fr
        DocumentRoot /var/www/html/prod/monserveur.fr
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/html/prod/monserveur.fr>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl/monserveur_io.crt
        SSLCertificateKeyFile /etc/apache2/ssl/monserveur.io.key
        SSLCACertificateFile /etc/apache2/ssl/monserveur_io.ca-bundle
        SSLCipherSuite HIGH:!aNULL:!MD5
        SSLProtocol all -SSLv2 -SSLv3
        SSLHonorCipherOrder on
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

Forcer HTTP vers HTTPS

 Pour forcer le redirect de HTTP vers HTTPS dans le vhost HTTP ajouter :
   
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]