4 234
modifications
(→DH) |
|||
(22 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 5 : | Ligne 5 : | ||
=NB := | =NB := | ||
* il semblerait que sslprotocol ne puisse pas être défini dans une vhost (pour être exact, seul le premier sslprotocol lu par apache est pris en compte. Le mieux est de le définir dans /etc/apache2/mods-enabled/ssl.conf | * il semblerait que sslprotocol ne puisse pas être défini dans une vhost (pour être exact, seul le premier sslprotocol lu par apache est pris en compte. Le mieux est de le définir dans /etc/apache2/mods-enabled/ssl.conf | ||
* SSLCipherSuite peut lui être défini plusieurs fois à condition d'aller du plus sécurisé | * SSLCipherSuite peut lui être défini plusieurs fois à condition d'aller du moins sécurisé (celui avec le plus de ciphers autorisés) au plus sécurisé (celui avec les ciphers les plus restrictifs) (le moins sécurisé dans ssl.conf, le plus sécurisé dans la vhost) | ||
* l'ordre des autorités intermédiaires dans le fichier de chaine de certification : du plus proche du certificat au plus éloigné. En gros : <code>cat signing_ca.pem intermediate_ca.pem root_ca.pem > cachain.pem</code> | * l'ordre des autorités intermédiaires dans le fichier de chaine de certification : du plus proche du certificat au plus éloigné. En gros : <code>cat signing_ca.pem intermediate_ca.pem root_ca.pem > cachain.pem</code> | ||
Ligne 13 : | Ligne 13 : | ||
Par défaut, apache utilise les paramètres DH définis dans la RFC 3526 en utilisant une taille de paramètre de la même taille que la clé privé utilisé par le site qui est sécurisé.<br> | Par défaut, apache utilise les paramètres DH définis dans la RFC 3526 en utilisant une taille de paramètre de la même taille que la clé privé utilisé par le site qui est sécurisé.<br> | ||
vous pouvez cependant forcer un paramètre dh personnalisé pour chaque site https en ajoutant le paramètre DH après le certificat ssl défini par la directive <code>SSLCertificateFile</code> : | vous pouvez cependant forcer un paramètre dh personnalisé pour chaque site https en ajoutant le paramètre DH après le certificat ssl défini par la directive <code>SSLCertificateFile</code> : | ||
<pre>cat /etc/ssl/private/dh4096.pem >> /etc/ssl/votresite.tld.pem</pre> | <pre>openssl dhparam 4096 -out /etc/ssl/private/dh4096.pem | ||
cat /etc/ssl/private/dh4096.pem >> /etc/ssl/votresite.tld.pem</pre> | |||
<br>A partir de apache 2.4.8 et openssl 1.0.2, on peut définir un paramètre dh personnalisé (pour tous les sites https géré par le serveur apache) avec la directive suivante : | <br>A partir de apache 2.4.8 et openssl 1.0.2, on peut définir un paramètre dh personnalisé global (pour tous les sites https géré par le serveur apache) avec la directive suivante : | ||
<pre>SSLOpenSSLConfCmd DHParameters /etc/ssl/private/dh4096.pem</pre> | <pre>SSLOpenSSLConfCmd DHParameters /etc/ssl/private/dh4096.pem</pre> | ||
==ECDH== | |||
<pre>openssl | Par défaut, apache utilise ECC 256 bits (secp256r1 aussi parfois nommé prime256v1) quelque soit la taille de la clé rsa utilisé.<br> | ||
Vous pouvez cependant forcer l'utilisation d'une courbe ECC plus grande en l'ajoutant après le certificat ssl défini par la directive <code>SSLCertificateFile</code> (il faudra donc le faire pour chaque site que vous sécurisez en ssl ...) : | |||
<pre>openssl ecparam -name secp384r1 -out /etc/ssl/private/ecdhsecp384r1.pem | |||
cat /etc/ssl/private/ecdhsecp384r1.pem >> /etc/ssl/votresite.tld.pem | |||
</pre> | |||
pour voir la liste des courbes disponibles : | |||
<pre>openssl ecparam -list_curves</pre> | |||
A l'heure ou j'écris ces lignes : | |||
* firefox 52 supporte les courbes x25519, secp256r1, secp384r1 et secp521r1 | |||
* chrome 57 supporte les courbes tls_grease_8a8a, x25519, secp256r1 et secp384r1 | |||
* vous pouvez vous faire une idée des courbes supportés pour chaque navigateur ici : https://www.ssllabs.com/ssltest/clients.html | |||
<br> | |||
On peut aussi vérifier la courbe utilisé : | |||
<pre>openssl ecparam -in /etc/ssl/private/ecdhsecp384r1.pem -text -noout</pre> | |||
Dès Apache 2.4.8 et OpenSSL 1.0.2, on peut dire a apache quelle courbe utiliser de manière globale par ordre de priorité et ce pour tous les sites (plus de necessité de le faire dans chaque fichier .pem) : | |||
<pre> | |||
SSLOpenSSLConfCmd Curves sect571r1:secp521r1:secp384r1:prime256v1 | |||
SSLOpenSSLConfCmd ECDHParameters Automatic | |||
</pre> | |||
La première directive donne la liste des courbes utilisables, la seconde défini le mode automatique qui choisira la courbe la plus solide disponible a la fois sur le client et le serveur lors de la négociation TLS. | |||
Notez que contrairement à DH, pour ECDH on précise simplement quelle courbe utiliser et non pas un fichier. | |||
=SSLCipherSuite= | =SSLCipherSuite= | ||
Ligne 43 : | Ligne 65 : | ||
</pre> | </pre> | ||
Accessoirement, mozilla a publié [https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations | un guide] ainsi qu'un [https:/ | Accessoirement, mozilla a publié [https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations | un guide] ainsi qu'un [https://ssl-config.mozilla.org/ | générateur de configuration] plutôt efficace. | ||
=tests= | =tests= | ||
Ligne 53 : | Ligne 75 : | ||
nmap --script ssl-cert,ssl-enum-ciphers -p 443,465,993,995 yoursite.tld | nmap --script ssl-cert,ssl-enum-ciphers -p 443,465,993,995 yoursite.tld | ||
</pre> | </pre> | ||
https://ssllabs.com <br> | |||
https://tls.imirhil.fr | |||
=HSTS, HPKP et DANE/TLSA= | =HSTS, HPKP et DANE/TLSA= |