Sélectionner une page

Le 20 septembre 2013, Benjamin Sonntag, directeur technique d’Octopuce, était en conférence sur SSL/TLS et le chiffrement dans le web à la Cantine / Numa, dans le cadre de Il était une fois Internet, cycle de conférence expliquant comment marche l’Internet.

Pendant cette formation, nous avons abordé progressivement tout le monde de SSL/TLS : chiffrement, signature, certificats. Nous sommes ensuite passé sur l’histoire de SSL par Netscape, celle de TLS par l’IETF, et l’ensemble des normes qui égrènent cette série de protocoles, clé de voûte de la sécurité sur Internet.

Nous avons terminé par les principes techniques évolués de SSL/TLS : PFS, Le choix des algorithmes de chiffrement, SNI, les certificats Wildcard et EV, S/MIME, etc.

Bien entendu, nous avons montré des exemples de configurations pour les logiciels les plus courants (http, mail, jabber, ftp…) et répondu à vos questions sur ce sujet.

Merci à Skhaen pour l’organisation de ce cycle de conférence passionnantes !

poster
SSL TLS par Benjamin Sonntag, Il était une fois Internet octobre 2013
00:00
--
/
--

Les slides peuvent être téléchargées ici : SSL-TLS_Sonntag.pdf.

Le document « Analysis of the HTTPS Certificate Ecosystem » peut être téléchargé ici : Analysis of the certificate ecosystem (pdf).

Exemples de configurations

Apache

ServerAdmin webmaster@octopuce.fr
DocumentRoot /var/www

SSLCertificateFile        /etc/ssl/private/octopuce.fr.crt
SSLCertificateChainFile   /etc/ssl/private/octopuce.fr.chain
SSLCertificateKeyFile     /etc/ssl/private/octopuce.fr.key

SSLEngine on
SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM 
Header set Strict-Transport-Security "max-age=2678400"

Nginx

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/ssl/private/octopuce.fr.crt+chain;
  ssl_certificate_key /etc/ssl/private/octopuce.fr.key;
  ssl_session_timeout 5m;
  ssl_prefer_server_ciphers on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;

  ssl_dhparam /etc/ssl/private/dh2048.pem;
  add_header Strict-Transport-Security max-age=2678400;
}

Et

openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048

lighttpd

$SERVER["socket"] == "0.0.0.0:443" {
  ssl.engine  = "enable"
  ssl.pemfile = "/etc/ssl/private/octopuce.fr.key+crt"
  ssl.ca-file = "/etc/ssl/private/octopuce.fr.chain"

  ssl.cipher-list = "ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM"
  ssl.honor-cipher-order = "enable"
  setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=2678400")
}

Postfix

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/private/octopuce.fr.crt+chain
smtpd_tls_dcert_file = $smtpd_tls_cert_file
smtpd_tls_key_file = /etc/ssl/private/octopuce.fr.key
smtpd_tls_dkey_file = $smtpd_tls_key_file
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5
smtpd_tls_dh1024_param_file = /etc/ssl/private/dh2048.pem

smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_protocols = !SSLv2,!SSLv3
smtpd_tls_received_header = yes

smtp_tls_cert_file = $smtpd_tls_cert_file
smtp_tls_dcert_file = $smtpd_tls_dcert_file
smtp_tls_key_file = $smtpd_tls_key_file
smtp_tls_dkey_file = $smtpd_tls_dkey_file
smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_tls_mandatory_ciphers = $smtpd_tls_mandatory_ciphers
smtp_tls_mandatory_exclude_ciphers = $smtpd_tls_mandatory_exclude_ciphers

smtp_use_tls = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_protocols = !SSLv2,!SSLv3
smtp_tls_secure_cert_match = nexthop, dot-nexthop

Proftpd

TLSEngine                on
TLSLog                    /var/log/proftpd/tls.log
TLSProtocol             TLSv1
TLSCipherSuite  ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM
TLSRSACertificateFile     /etc/ssl/private/octopuce.fr.crt+chain
TLSRSACertificateKeyFile     /etc/ssl/private/octopuce.fr.key
TLSRenegotiate           required off
TLSOptions               NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient          off
TLSRequired                on # facultatif

Prosody

ssl = {
    key = "/etc/ssl/private/octopuce.fr.key";
    certificate = "/etc/ssl/private/octopuce.fr.crt+chain";
}

c2s_require_encryption = true
s2s_require_encryption = true

IMPORTANT : copier le bloc SSL = { } dans tout VirtualHost.