Based on recommendations, we recently attempted to harden our Nginx SSL configuration against BEAST/CRIME/BREACH attacks with the following stanza:
ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:RC4-SHA;
We happen to use AWS Cloudfront to distribute static assets, and use our Nginx to serve the files as a Custom Origin. However, since restricting the allowed ciphers, Cloudfront's edge locations were suddenly unable to negotiate secure connections with Nginx.
Not being a subject matter expert, I'm not entirely sure how to integrate what works for AWS with what works for a secure configuration! It's my understanding that MD5 is "weak sauce" as ciphers go. Would it be acceptable to enable the MD5 cipher for the static resource locations that Cloudfront needs, and use the hardened ssl_ciphers stanza for everything else, or does that open up a chink in the armor?
Also, what would the correct formulation of the
ssl_ciphers stanza be?