[Tuto/HowTo] [Linux] Générer certificat SSL et configurer HTTPS

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [Linux] Générer certificat SSL et configurer HTTPS

Message par voxdemonix » dim. mars 01, 2015 6:27 pm

testé sur apache2
Comment générer un certificat SSL ( valide 10 ans ; utilisant sha256 ) et configurer un host https pour apache2 sécurisé (noté A sur ssllabs ) :
(l'exemple ici explique pour un owncloud, mais peut être très facilement adapté pour n'importe quel host utilisant apache2 )

Pré-requis:

Code : Tout sélectionner

openssl apache2 apache2.2-common apache2-utils
Générer un certificat auto-signé ( valide 10 ans et utilisant sha256 ):

Code : Tout sélectionner

openssl genrsa -out /etc/ssl/private/owncloud.key 2048
openssl req -new -key /etc/ssl/private/owncloud.key -out  /etc/ssl/private/NewSha2.csr
openssl x509 -sha256 -req -days 3650 -in /etc/ssl/private/NewSha2.csr -signkey /etc/ssl/private/owncloud.key -out /etc/ssl/private/owncloud.crt
Note : pour ne pas avoir d'alerte de sécurité sur les espaces publiques type Internet vous pouvez suivre ce tuto pour créer un certificat trust gratuit

Activer le module SSL d'apache2 et le module rewrite (pour renvoyer les gens HTTP vers HTTPS):

Code : Tout sélectionner

sudo a2enmod ssl
sudo a2enmod rewrite
le fichier vhost qui redirige tout flux HTTP (sur port 80) vers HTTPS et qui surveille le port officiel https (443): /etc/apache2/sites-available/vhost_owncloud
(si ton NAT est ouvert sur port 80 et 443 et qu'un utilisateur oublie de mettre "https" il ne tombera pas sur une erreur, il sera redirigé vers https)

Code : Tout sélectionner

NameVirtualHost *:443
<VirtualHost *:80>
        ServerName      owncloud
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
   
        SSLEngine On
        SSLCertificateFile /etc/ssl/private/owncloud.crt
        SSLCertificateKeyFile /etc/ssl/private/owncloud.key
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Deny from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel error

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
On désactive le précédent Vhost et on active le nouveau:

Code : Tout sélectionner

sudo a2dissite default
sudo a2ensite vhost_owncloud
On configure enfin les ports d'apache2: /etc/apache2/ports.conf

Code : Tout sélectionner

<IfModule ssl_module>
        Listen 80
        Listen 443
</IfModule>
Bonus made in SSLlab ( https://community.qualys.com/blogs/secu ... rd-secrecy ):
On blinde SSL :
/etc/apache2/mods-enabled/ssl.conf

Code : Tout sélectionner

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3


On supprime les messages d'erreurs visible par tout publique en modifiant /etc/apache2/apache2.conf

Code : Tout sélectionner

# ServerTokens : hide versions product in the header
ServerTokens Prod
# ServerSignature : hide versions product in error s page
ServerSignature Off

et enfin redémarrer apache2

Code : Tout sélectionner

sudo service apache2 reload
source: https://forum.ubuntu-fr.org/viewtopic.p ... #p19290771
Modifié en dernier par voxdemonix le ven. août 26, 2016 2:26 am, modifié 14 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Générer certificat SSL et configurer https

Message par voxdemonix » dim. mars 01, 2015 6:36 pm

Astuce apache2:
changer l'utilisateur par défaut d'apache2 en modifiant le fichier
/etc/apache2/envvars

Code : Tout sélectionner

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
source: http://ubuntuforums.org/showthread.php?t=927142
Modifié en dernier par voxdemonix le mer. mars 04, 2015 5:28 pm, modifié 1 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: [Tuto/HowTo] [Linux] Générer certificat SSL et configurer HTTPS

Message par voxdemonix » mer. mars 04, 2015 11:40 am

Tentative d'avoir un A+ sur SSL lab.

Test de cipher (addition de mozzila + SSLlab):

Code : Tout sélectionner

EECDH+aRSA+AESGCM EECDH+aRSA+SHA384 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK:!SRP: !DSS
source : https://wiki.mozilla.org/Security/Serve ... igurations
http://trac.evolix.net/infogerance/wiki/HowtoSSL

Autre cipher:

Code : Tout sélectionner

AES256+EECDH:AES256+EDH:!aNULL;
https://sethvargo.com/getting-an-a-plus ... bs-tester/
https://www.infosecsociety.com/blog/25- ... s-ssl-test




Test de HSTS dans fichier Host (pour l'exemple: /etc/apache2/sites-available/vhost_owncloud )

Code : Tout sélectionner

# Enable HTTP Strict Transport Security with a 10 years duration
Header always set Strict-Transport-Security "max-age=315360000; includeSubDomains;"
et activer avec

Code : Tout sélectionner

sudo a2enmod headers
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité