397 liens privés
Matrice de compatibilité navigateur / protocole SSL TLS.
On peut voir que Android ne gère pas TLS 1.2 avant Kitkat.
Or iOS9 exige maintenant du TLS 1.2 uniquement (avec des ciphers permettant le Perfect Foward Secrecy)
"""
If you’re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible. In addition, your communication through higher-level APIs needs to be encrypted using TLS version 1.2 with forward secrecy. If you try to make a connection that doesn't follow this requirement, an error is thrown. If your app needs to make a request to an insecure domain, you have to specify this domain in your app's Info.plist file.
"""
source: https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html
Cela peut poser problème quand on fait une app multiplateforme (android/iOS) et qu'on veut assurer la rétrocompatibilité. Il existe cependant une solution de contournement, en attendant: http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/
EDIT: et je précise car la doc officielle n'est pas claire
"""
iOS9 requires the server to only support TLSv1.2 and support perfect forward security.
"""
source: http://stackoverflow.com/questions/30778579/kcfstreamerrordomainssl-9802-when-connecting-to-a-server-by-ip-address-through
EDIT2: Je ne parle que de App Transport Security ici
"""
App Transport Security (ATS) lets an app add a declaration to its Info.plist file that specifies the domains with which it needs secure communication.
"""
EDIT3: Ce que j'ai dit plus haut est faux (TLS 1.2 only sur iOS9). Par contre il faut respecter les ciphers précisés ici: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/ et surtout avoir une signature en SHA256.
Alternative libre à SSLlabs (https://www.ssllabs.com/ssltest/) pour vérifier nos implémentations de TLS sur HTTP/SMTP/XMPP.
L'article qui en parle et qui permet, entre autre, de comprendre les fondamentaux:
- protocole SSL/TLS
- authentification
- chiffrement
- PFS
https://blog.imirhil.fr/cryptcheck-verifiez-vos-implementations-de-tls.html
tiens j'ignorais qu'on pouvait faire bouffer un dh_param de 2048bits à smtpd_tls_dh1024_param_file
sachant qu'il existe aussi smtpd_tls_dh512_param_file, mais pas smtpd_tls_dh2048_param_file
"""
smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
"""
ça fonctionne à partir de postfix 2.2
bon, ça changera pas ma note (https://imirhil.fr/tls/smtp.html) je suis au top ^^'
Benjamin Sonntag a partagé ses (très bonnes) configurations SSL/TLS.
J'ai adopté celle de nginx qui me permet d'obtenir la note globale de A sur ssllabs avec un certificat gratuit class1 de chez startssl: https://www.ssllabs.com/ssltest/analyze.html?d=fralef.me
Voilà voilà, en attendant que DANE (http://www.slideshare.net/Deploy360/introduction-to-the-dane-protocol) soit adopté bientôt, pour une sécurité accessible à tous...
"Today, according to the Trustworthy Internet Movement’s data, nearly 33% of the top 200,000 sites are using weak cipher suites and very few have deployed suites that offer Perfect Forward Secrecy (PFS), a mechanism that protects sessions from later key compromise."
Dire que SSL/TLS est troué, c'est pas totalement vrai je pense. Il est surtout hyper mal implémenté et il repose sur un système de certification hasardeux.
via https://www.globalsign.com/blog/trust-the-math-choose-your-friends-wisely.html
Bien penser à mettre des ciphersuites ECDHE en début car ils permettent le PFS et apportent de bonnes perfs.
"Eavesdroppers wishing to decrypt past communication which has used PFS face a daunting task: each previous session needs to be attacked independently. Even knowing the long-term private key does not help as the session key is not available by simple decryption. Conversely, when SSL connections do not use PFS, the secret key used to encrypt the rest of the session is generated by the SSL site and sent encrypted with the long-term private-public key pair. If this long-term private key is ever compromised all previous encrypted sessions are easily decrypted."