{"id":2792,"date":"2014-02-11T08:16:38","date_gmt":"2014-02-11T00:16:38","guid":{"rendered":"http:\/\/rmohan.com\/?p=2792"},"modified":"2014-02-11T08:23:16","modified_gmt":"2014-02-11T00:23:16","slug":"web-servers-ssl-ciphers","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=2792","title":{"rendered":"Web Server\u2019s SSL Ciphers"},"content":{"rendered":"<h2>How to Disable Weak SSL Protocols and Ciphers in IIS<\/h2>\n<div><img decoding=\"async\" alt=\"\" src=\"http:\/\/www.waynezim.com\/wp-content\/themes\/BlackShade\/images\/date.png\" \/>\u00a0March 17th, 2011\u00a0<img decoding=\"async\" alt=\"\" src=\"http:\/\/www.waynezim.com\/wp-content\/themes\/BlackShade\/images\/user.png\" \/>\u00a0Wayne Zimmerman<\/div>\n<div>\n<p>I recently undertook the process of moving websites to different servers here at work. This required that university networking group scan the new webserver with a tool called Nessus. Unfortunately this turned up several errors, all of them had to do with Secure Sockets Layer or SSL which in Microsoft Windows Server 2003 \/ Internet Information Server 6 out of the box support both unsecure protocols and cipher suites. These problems would have to be solved before they would allow the new server though the firewalls. The report they university sent me was generated by Nessus generated errors like this:<\/p>\n<pre lang=\"txt\">SSL Version 2 (v2) Protocol Detection\r\n\r\nSynopsis :\r\n\r\nThe remote service encrypts traffic using a protocol with known\r\nweaknesses.\r\n\r\nDescription :\r\n\r\nThe remote service accepts connections encrypted using SSL 2.0, which\r\nreportedly suffers from several cryptographic flaws and has been\r\ndeprecated for several years. An attacker may be able to exploit\r\nthese issues to conduct man-in-the-middle attacks or decrypt\r\ncommunications between the affected service and clients.\r\n\r\nSee also :\r\n\r\nhttp:\/\/www.schneier.com\/paper-ssl.pdf\r\n\r\nhttp:\/\/support.microsoft.com\/kb\/187498\r\n\r\nhttp:\/\/www.linux4beginners.info\/node\/disable-sslv2\r\n\r\nSolution :\r\n\r\nConsult the application's documentation to disable SSL 2.0 and use SSL\r\n3.0 or TLS 1.0 instead.\r\n\r\nRisk factor :\r\n\r\nMedium \/ CVSS Base Score : 5.0\r\n(CVSS2#AV:N\/AC:L\/Au:N\/C:P\/I:N\/A:N)\r\n\r\nNessus ID : 20007\r\n----------------------------------------------------------\r\nSSL Medium Strength Cipher Suites Supported\r\n\r\nSynopsis :\r\n\r\nThe remote service supports the use of medium strength SSL ciphers.\r\n\r\nDescription :\r\n\r\nThe remote host supports the use of SSL ciphers that offer medium\r\nstrength encryption, which we currently regard as those with key\r\nlengths at least 56 bits and less than 112 bits.\r\n\r\nNote: This is considerably easier to exploit if the attacker is on the\r\nsame physical network.\r\n\r\nSolution :\r\n\r\nReconfigure the affected application if possible to avoid use of\r\nmedium strength ciphers.\r\n\r\nRisk factor :\r\n\r\nMedium \/ CVSS Base Score : 4.3\r\n(CVSS2#AV:N\/AC:M\/Au:N\/C:P\/I:N\/A:N)\r\n\r\nPlugin output :\r\n\r\nHere are the medium strength SSL ciphers supported by the remote server :\r\n\r\nMedium Strength Ciphers (&gt;= 56-bit and &lt; 112-bit key)\r\nSSLv2\r\nDES-CBC-MD5 Kx=RSA Au=RSA Enc=DES(56) Mac=MD5\r\nSSLv3\r\nDES-CBC-SHA Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1\r\nTLSv1\r\nEXP1024-DES-CBC-SHA Kx=RSA(1024) Au=RSA Enc=DES(56) Mac=SHA1 export\r\nEXP1024-RC4-SHA Kx=RSA(1024) Au=RSA Enc=RC4(56) Mac=SHA1 export\r\nDES-CBC-SHA Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1\r\n\r\nThe fields above are :\r\n\r\n{OpenSSL ciphername}\r\nKx={key exchange}\r\nAu={authentication}\r\nEnc={symmetric encryption method}\r\nMac={message authentication code}\r\n{export flag}\r\n\r\nNessus ID : 42873\r\n--------------------------------------------------------------------\r\nSSL Weak Cipher Suites Supported\r\n\r\nSynopsis :\r\n\r\nThe remote service supports the use of weak SSL ciphers.\r\n\r\nDescription :\r\n\r\nThe remote host supports the use of SSL ciphers that offer either weak\r\nencryption or no encryption at all.\r\n\r\nNote: This is considerably easier to exploit if the attacker is on the\r\nsame physical network.\r\n\r\nSee also :\r\n\r\nhttp:\/\/www.openssl.org\/docs\/apps\/ciphers.html\r\n\r\nSolution :\r\n\r\nReconfigure the affected application if possible to avoid use of weak\r\nciphers.\r\n\r\nRisk factor :\r\n\r\nMedium \/ CVSS Base Score : 4.3\r\n(CVSS2#AV:N\/AC:M\/Au:N\/C:P\/I:N\/A:N)\r\n\r\nPlugin output :\r\n\r\nHere is the list of weak SSL ciphers supported by the remote server :\r\n\r\nLow Strength Ciphers (&lt; 56-bit key)\r\nSSLv2\r\nEXP-RC2-CBC-MD5 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export\r\nEXP-RC4-MD5 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export\r\nSSLv3\r\nEXP-RC2-CBC-MD5 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export\r\nEXP-RC4-MD5 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export\r\nTLSv1\r\nEXP-RC2-CBC-MD5 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export\r\nEXP-RC4-MD5 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export\r\n\r\nThe fields above are :\r\n\r\n{OpenSSL ciphername}\r\nKx={key exchange}\r\nAu={authentication}\r\nEnc={symmetric encryption method}\r\nMac={message authentication code}\r\n{export flag}\r\n\r\nOther references : CWE:327, CWE:326, CWE:753, CWE:803, CWE:720\r\n\r\nNessus ID : 26928\r\n-----------------------------------------------------------------<\/pre>\n<p>These three error messages pretty much mean that you need to turn off SSL 2.0 due to exploits that were found after the standard was created. You need to turn off any encryption suites lower than 128bits. The third error message says we need to turn off anything for less than 56bits, but this will be accomplished by turning of anything less than 128bits. Basically your are modifying the settings that restrict the use of specific protocols and ciphers that are used by the schannel.dll. More detailed information can be found at Micorsoft\u2019s\u00a0<a href=\"http:\/\/support.microsoft.com\/kb\/187498\">KB187498<\/a>\u00a0or\u00a0<a href=\"http:\/\/support.microsoft.com\/kb\/245030\">KB245030<\/a><\/p>\n<p><strong>How do we do this?<\/strong><\/p>\n<p><strong>Disabling SSL 2.0 on IIS 6<\/strong><\/p>\n<ol>\n<li>Open up \u201cregedit\u201d from the command line<\/li>\n<li>Browse to the following key:<br \/>\nHKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\SSL 2.0\\Server<\/li>\n<li>Create a new REG_DWORD called \u201cEnabled\u201d and set the value to 0<\/li>\n<li>You will need to restart the computer for this change to take effect. (you can wait on this if you also need to disable the ciphers)<\/li>\n<\/ol>\n<p><strong>Disable unsecure encryption ciphers less than 128bit<\/strong><\/p>\n<ol>\n<li>Open up \u201cregedit\u201d from the command line<\/li>\n<li>Browse to the following key:<br \/>\nHKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Ciphers\\DES 56\/56<\/li>\n<li>Create a new REG_DWORD called \u201cEnabled\u201d and set the value to 0<\/li>\n<li>Browse to the following key:<br \/>\nHKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Ciphers\\RC2 40\/128<\/li>\n<li>Create a new REG_DWORD called \u201cEnabled\u201d and set the value to 0<\/li>\n<li>Browse to the following key:<br \/>\nHKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Ciphers\\RC4 40\/128<\/li>\n<li>Create a new REG_DWORD called \u201cEnabled\u201d and set the value to 0<\/li>\n<li>Browse to the following key:<br \/>\nHKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Ciphers\\RC4 56\/128<\/li>\n<li>Create a new REG_DWORD called \u201cEnabled\u201d and set the value to 0<\/li>\n<li>You will need to restart the computer for this change to take effect.<\/li>\n<\/ol>\n<p><strong>How to verify the changes?<\/strong><\/p>\n<p>Now that you have made these changes how can you be sure that they have taken place without having to go to your boss or higher authority just to find that you did them wrong. Well I found a nice tool called SSL-SCAN which you can download at\u00a0<a href=\"http:\/\/code.google.com\/p\/sslscan-win\/\">http:\/\/code.google.com\/p\/sslscan-win\/<\/a>\u00a0for the Windows port or you can download an compile for your favorite operating system at the original project SSL-SCAN site\u00a0<a href=\"http:\/\/sourceforge.net\/projects\/sslscan\/\">http:\/\/sourceforge.net\/projects\/sslscan\/<\/a>. This tool provides some great detail about what is allows and not allows plus some analysis of the SSL certificate itself.<\/p>\n<p>Below the screen shot shows that we have disabled any ciphers that attempt to use the SSL 2.0 protocol and we\u2019ve disabled all ciphers that less than 128bit.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2800\" alt=\"sslscan1-595x1024\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024.jpg\" width=\"595\" height=\"1024\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024.jpg 595w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024-174x300.jpg 174w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024-87x150.jpg 87w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/02\/sslscan1-595x1024-400x688.jpg 400w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/a><\/p>\n<div>\n<div>Be Sociable, Share!<\/div>\n<div><\/div>\n<div><\/div>\n<div>\n<h2>Hardening Your Web Server\u2019s SSL\u00a0Ciphers<\/h2>\n<header id=\"meta\">\n<ul>\n<li><time datetime=\"2013-02-05\">February 05, 2013<\/time><\/li>\n<li><a href=\"https:\/\/hynek.me\/articles\/hardening-your-web-servers-ssl-ciphers\/\">?<\/a><\/li>\n<\/ul>\n<\/header>\n<article>There are many wordy ar\u00adti\u00adcles on con\u00adfig\u00adur\u00ading your web server\u2019s SSL ci\u00adphers. This is not one of them. In\u00adstead I will share a con\u00adfig\u00adu\u00adra\u00adtion which is both com\u00adpat\u00adi\u00adble enough for today\u2019s needs and scores a straight \u201c<a href=\"http:\/\/www.youtube.com\/watch?v=WVzp4MJRKHc\">A<\/a>\u201d on<a href=\"https:\/\/www.ssllabs.com\/ssltest\/\">Qualys\u2019s SSL Server\u00a0Test<\/a>.<\/p>\n<p><strong>Dis\u00adclaimer:<\/strong>\u00a0I\u2019m up\u00addat\u00ading this post con\u00adtin\u00adu\u00adally in order to rep\u00adre\u00adsent what I con\u00adsider the best prac\u00adtice in the mo\u00adment \u2013 there are way too many dan\u00adger\u00adously out\u00addated ar\u00adti\u00adcles about TLS-de\u00adploy\u00adment out there\u00a0al\u00adready.<\/p>\n<p>There\u00adfore it may be a good idea to check back from time to time be\u00adcause the crypto land\u00adscape is chang\u00ading pretty quickly at the mo\u00adment. You can fol\u00adlow me on\u00a0<a href=\"http:\/\/twitter.com\/hynek\">Twit\u00adter<\/a>\u00a0to get no\u00adti\u00adfied about note\u00adwor\u00adthy\u00a0changes.<\/p>\n<p>If you find any fac\u00adtual prob\u00adlems, please reach out to\u00a0<a href=\"http:\/\/hynek.me\/about\/\">me<\/a>\u00a0im\u00adme\u00addi\u00adately and I will fix it\u00a0ASAP.<\/p>\n<h2>Rationale<\/h2>\n<p>If you con\u00adfig\u00adure a web server\u2019s SSL con\u00adfig\u00adu\u00adra\u00adtion, you have pri\u00admar\u00adily to take care of three things:<\/p>\n<ol>\n<li>disable\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Secure_Sockets_Layer#SSL_1.0.2C_2.0_and_3.0\">SSL 2.0<\/a>, and \u2013 if you can afford it \u2013 SSL 3.0 (Internet Explorer 6 is the last remaining reason to keep it around; you\u00a0<a href=\"https:\/\/www.imperialviolet.org\/2013\/10\/07\/chacha20.html\">can\u2019t have elliptic curve crypto<\/a>\u00a0with SSL 3.0 and downgrade attacks exist),<\/li>\n<li>disable TLS 1.0 compression (<a href=\"http:\/\/security.stackexchange.com\/a\/19914\">CRIME<\/a>),<\/li>\n<li>disable weak ciphers (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Data_Encryption_Standard#Security_and_cryptanalysis\">DES<\/a>,\u00a0<a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2013\/03\/19\/rc4-in-tls-is-broken-now-what\">RC4<\/a>), prefer modern ciphers (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Advanced_Encryption_Standard\">AES<\/a>), modes (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Galois\/Counter_Mode\">GCM<\/a>), and protocols (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Transport_Layer_Security#TLS_1.2\">TLS 1.2<\/a>).<\/li>\n<\/ol>\n<p>You should also put ef\u00adfort into mit\u00adi\u00adgat\u00ading\u00a0<a href=\"http:\/\/breachattack.com\/\">BREACH<\/a>. That\u2019s out of scope here though as it\u2019s largely\u00a0ap\u00adpli\u00adca\u00adtion-de\u00adpen\u00addent.<\/p>\n<h2>Software and\u00a0Versions<\/h2>\n<p>On the\u00a0<strong>server<\/strong>\u00a0side, you should up\u00addate your OpenSSL to 1.0.0+ so you can sup\u00adport\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Transport_Layer_Security#TLS_1.2\">TLS 1.2<\/a>,\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Galois\/Counter_Mode\">GCM<\/a>, and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Elliptic_curve_Diffie%E2%80%93Hellman\">ECDH<\/a>\u00a0as soon as pos\u00adsi\u00adble. For\u00adtu\u00adnately that\u2019s al\u00adready the case in the cur\u00adrent Ubuntu\u00a0LTS.<\/p>\n<p>On the\u00a0<strong>client<\/strong>\u00a0side, the browser ven\u00addors are start\u00ading to catch up. As of now, Chrome 30, In\u00adter\u00adnet Ex\u00adplorer 11 on Win\u00addows 8, Sa\u00adfari 7 on OS X 10.9, and Fire\u00adfox 26 sup\u00adport TLS 1.2 (but no GCM, Chrome 32 is going to be the first one to sup\u00adport that). Fire\u00adfox also has TLS 1.2 dis\u00adabled by de\u00adfault which changed re\u00adcently in\u00a0<a href=\"http:\/\/www.mozilla.org\/de\/firefox\/channel\/#aurora\">Au\u00adrora<\/a>.<\/p>\n<h2>RC4<\/h2>\n<p>There used to be a bul\u00adlet point sug\u00adgest\u00ading to use RC4 to avoid\u00a0<a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2011\/10\/17\/mitigating-the-beast-attack-on-tls\">BEAST<\/a>and\u00a0<a href=\"http:\/\/www.isg.rhul.ac.uk\/tls\/\">Lucky Thir\u00adteen<\/a>. And iron\u00adi\u00adcally, that used to be the orig\u00adi\u00adnal rea\u00adson for this ar\u00adti\u00adcle: when Lucky Thir\u00adteen came out, the word in the streets was: \u201cuse RC4 to mit\u00adi\u00adgate\u201d and every\u00adone was like \u201chow!?\u201d.<\/p>\n<p>Un\u00adfor\u00adtu\u00adnately shortly there\u00adafter, RC4 was\u00a0<a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2013\/03\/19\/rc4-in-tls-is-broken-now-what\">bro\u00adken<\/a>\u00a0in a way that makes de\u00adploy\u00ading TLS with it nowa\u00addays a risk. While BEAST et al re\u00adquire an\u00a0<em>ac\u00adtive<\/em>\u00a0at\u00adtack on the browser of the vic\u00adtim, pas\u00adsive at\u00adtacks on RC4\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Ciphertext\">ci\u00adpher\u00adtext<\/a>\u00a0are get\u00adting stronger every day. In other words: it\u2019s pos\u00adsi\u00adble that it will be\u00adcome fea\u00adsi\u00adble to de\u00adcrypt in\u00adter\u00adcepted RC4 traf\u00adfic even\u00adtu\u00adally. Mi\u00adcrosoft even is\u00adsued a se\u00adcu\u00adrity\u00a0<a href=\"http:\/\/blogs.technet.com\/b\/srd\/archive\/2013\/11\/12\/security-advisory-2868725-recommendation-to-disable-rc4.aspx\">ad\u00advi\u00adsory<\/a>\u00a0that rec\u00adom\u00admends to dis\u00adable\u00a0RC4.<\/p>\n<h2>The\u00a0String<\/h2>\n<p>Until re\u00adcently, Qualys pre\u00adferred RC4 over CBC-mode ci\u00adphers and I gave you two ci\u00adpher strings to choose from: one that gave you an \u201cA\u201d but used RC4 and one that gave you a \u201cB\u201d but was ac\u00adtu\u00adally se\u00adcure. Since they fi\u00adnally\u00a0<a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2013\/09\/10\/is-beast-still-a-threat\">changed<\/a>\u00a0their mind \u2013 and as of Sa\u00adfari 7 there\u2019s no main\u00adstream browser left that is sus\u00adcep\u00adti\u00adble to BEAST \u2013 I can jump di\u00adrectly to the se\u00adcure one:<\/p>\n<pre><code>ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS\r\n<\/code><\/pre>\n<p>You can test it against your OpenSSL in\u00adstal\u00adla\u00adtion\u00a0using<\/p>\n<pre><code>openssl ciphers -v 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS'\r\n<\/code><\/pre>\n<p>to see what\u2019s\u00a0sup\u00adported.<\/p>\n<p>You\u2019ll get:<\/p>\n<ul>\n<li>Best possible encryption in all browsers.<\/li>\n<li><a href=\"http:\/\/news.netcraft.com\/archives\/2013\/06\/25\/ssl-intercepted-today-decrypted-tomorrow.html\">Perfect forward secrecy<\/a>; if\u00a0<em>your<\/em>\u00a0web server,\u00a0<em>your<\/em>\u00a0OpenSSL, and\u00a0<em>their<\/em>browser support it.<\/li>\n<li>It doesn\u2019t offer RC4 even as a fallback. Although its inclusion at\u00a0<em>the end<\/em>of the cipher string\u00a0<em>shouldn\u2019t<\/em>\u00a0matter, active downgrade attacks on SSL\/TLS exist and having RC4 as part of the the cipher string you potentially expose\u00a0<em>all<\/em>\u00a0of your users to it. Even IE 6 does\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/3DES\">3DES<\/a>\u00a0just fine.<\/li>\n<\/ul>\n<p>The string also prefers AES-256 over AES-128 (ex\u00adcept for GCM which is pre\u00adferred over every\u00adthing else). It does so mostly for li\u00ada\u00adbil\u00adity rea\u00adsons be\u00adcause cus\u00adtomers may in\u00adsist on it for bogus\u00a0rea\u00adsons.<\/p>\n<p>How\u00adever quoth a cryp\u00adtog\u00adra\u00adpher:<\/p>\n<blockquote><p>AES-128 isn&#8217;t re\u00adally worse than AES-any\u00adthin\u00adgelse, at least not in ways you care\u00a0about<\/p><\/blockquote>\n<p>So if AES-128 is fine for you, feel free to add an \u2018<code>:!AES256<\/code>\u2019 to the end of the ci\u00adpher string to keep your ci\u00adpher suite shorter which will also\u00a0<a href=\"http:\/\/unhandledexpression.com\/2013\/01\/25\/5-easy-tips-to-accelerate-ssl\/\">ex\u00adpe\u00addite your TLS\u00a0hand\u00adshakes<\/a>.<\/p>\n<h2>Apache<\/h2>\n<div>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<pre>1\r\n2\r\n3<\/pre>\n<\/div>\n<\/td>\n<td>\n<div>\n<pre>SSLProtocol ALL -SSLv2\r\nSSLHonorCipherOrder On\r\nSSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS<\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>This works on both Apache 2.2 and 2.4. If your OpenSSL doesn\u2019t sup\u00adport the pre\u00adferred mod\u00adern ci\u00adphers (like the still com\u00admon 0.9.8), it will fall back grace\u00adfully but your con\u00adfig\u00adu\u00adra\u00adtion is ready for the\u00a0fu\u00adture.<\/p>\n<p><strong>Please note<\/strong>: you need Apache 2.4 for\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Elliptic_curve_Diffie%E2%80%93Hellman\">ECDH<\/a>\u00a0and\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/ECDSA\">ECDSA<\/a>. You can cir\u00adcum\u00advent that lim\u00adi\u00adta\u00adtion by putting an SSL proxy like\u00a0<a href=\"https:\/\/github.com\/bumptech\/stud\">stud<\/a>\u00a0or even nginx in front of it and let Apache serve only plain\u00a0HTTP.<\/p>\n<p>TLS com\u00adpres\u00adsion is a bit more com\u00adpli\u00adcated: as of Apache 2.2.23, it\u2019s\u00a0<a href=\"http:\/\/httpd.apache.org\/docs\/2.2\/mod\/mod_ssl.html#sslcompression\">not pos\u00adsi\u00adble<\/a>\u00a0to switch it off in\u00adside of Apache. For Apache 2.2.24+ and 2.4.3+, you can switch it off using:<\/p>\n<div>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<pre>1<\/pre>\n<\/div>\n<\/td>\n<td>\n<div>\n<pre>SSLCompression Off<\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Cur\u00adrently the de\u00adfault is\u00a0<code>On<\/code>, but that changed from 2.4.4\u00a0on.<\/p>\n<p>The good news for\u00a0<strong>Ubuntu<\/strong>\u00a0ad\u00admins is that Ubuntu has\u00a0<a href=\"https:\/\/bugs.launchpad.net\/ubuntu\/+source\/apache2\/+bug\/1068854\">back ported<\/a>that op\u00adtion into their 2.2 pack\u00adages \u2013 and set it to\u00a0<code>off<\/code>\u00a0by de\u00adfault \u2013 so you should be fine.\u00a0<a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=857051#c5\">The so\u00adlu\u00adtion<\/a>\u00a0on\u00a0<strong>Red Hat<\/strong>\u00a0based OS (RHEL, Fe\u00addora, Cen\u00adtOS, Sci\u00aden\u00adtific Linux\u2026) is set\u00adting an en\u00advi\u00adron\u00adment vari\u00adable in\u00adside of your Apache startup script:<\/p>\n<div>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<pre>1<\/pre>\n<\/div>\n<\/td>\n<td>\n<div>\n<pre>export OPENSSL_NO_DEFAULT_ZLIB=1<\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>nginx<\/h2>\n<div>\n<div>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<pre>1\r\n2\r\n3<\/pre>\n<\/div>\n<\/td>\n<td>\n<div>\n<pre>ssl_prefer_server_ciphers On;\r\nssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;\r\nssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;<\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>SSL 2.0 is off and the best pro\u00adto\u00adcols on by de\u00adfault. How\u00adever it may be that you have some ar\u00adti\u00adfact from pre-TLS 1.2 times lurk\u00ading some\u00adwhere in your con\u00adfig so it\u2019s bet\u00adter to be\u00a0ex\u00adplicit.<\/p>\n<p>TLS com\u00adpres\u00adsion de\u00adpends on the ver\u00adsion of nginx\u00a0<em>and<\/em>\u00a0the ver\u00adsion of OpenSSL. If OpenSSL 1.0.0 or later is in\u00adstalled, any\u00adthing after nginx 1.0.9 and 1.1.6 is fine. If an older OpenSSL is in\u00adstalled, you\u2019ll need at least nginx 1.2.2 or 1.3.2.<\/p>\n<p>For more de\u00adtails, have a look at this\u00a0<a href=\"http:\/\/serverfault.com\/a\/417557\">server\u00adfault\u00a0an\u00adswer<\/a>.<\/p>\n<p><strong>TL;DR on TLS com\u00adpres\u00adsion &amp; nginx<\/strong>: if you\u2019re using Ubuntu Pre\u00adcise (i.e. the cur\u00adrent LTS re\u00adlease) you\u2019re fine (OpenSSL 1.0.1\/nginx 1.1.19).<\/p>\n<h2>Bonus\u00a0Points<\/h2>\n<p>Qualys\u00a0<a href=\"https:\/\/community.qualys.com\/blogs\/securitylabs\/2014\/01\/21\/ssl-labs-stricter-security-requirements-for-2014\">up\u00addated<\/a>\u00a0their re\u00adquire\u00adments on 2014-01-21 and the ci\u00adpher suites here are still \u201cA\u201d\u2013ma\u00adte\u00adr\u00adial. If you want an \u201cA+\u201d though, you\u2019ll need to add\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/HTTP_Strict_Transport_Security\">HSTS head\u00aders<\/a>\u00a0too, which is out of scope for this ar\u00adti\u00adcle but the linked Wikipedia ar\u00adti\u00adcle will get you\u00a0started.<\/p>\n<h2>Finally<\/h2>\n<p><strong>Make sure to\u00a0<a href=\"https:\/\/www.ssllabs.com\/ssltest\/\">test<\/a>\u00a0your server\u00a0af\u00adter\u00adwards!<\/strong><\/p>\n<p>If you want to learn more about de\u00adploy\u00ading SSL\/TLS,\u00a0<a href=\"https:\/\/www.ssllabs.com\/\">Qualys<\/a>\u2019s\u00a0<a href=\"https:\/\/www.ssllabs.com\/downloads\/SSL_TLS_Deployment_Best_Practices_1.0.pdf\">SSL\/TLS De\u00adploy\u00adment Best Prac\u00adtices<\/a>\u00a0are a de\u00adcent\u00a0primer.<\/p>\n<p>For in\u00adves\u00adti\u00adgat\u00ading the SSL\/TLS be\u00adhav\u00adior of your\u00a0<em>browser<\/em>,\u00a0<a href=\"https:\/\/www.howsmyssl.com\/\">How\u2019s My SSL?<\/a>will give you all the de\u00adtails you\u00a0need.<\/p>\n<h3>The (Near)\u00a0Future<\/h3>\n<p>2013 has gal\u00adva\u00adnized the whole in\u00addus\u00adtry. This is a good thing. In 2012 barely any\u00adone lost a thought about con\u00adfig\u00adur\u00ading their TLS ci\u00adphers, how many bits their cer\u00adtifi\u00adcates had, or even for\u00adward se\u00adcrecy. That made it way too easy for the bad folks. Nowa\u00addays, peo\u00adple are ques\u00adtion\u00ading their own prac\u00adtices, open source pro\u00adjects work on en\u00adhanc\u00ading their TLS sup\u00adport, and the pub\u00adlic started to lis\u00adten to cryp\u00adtog\u00adra\u00adphers again in\u00adstead of dis\u00adcount\u00ading them as crazy tin\u00adfoil\u00a0crowd.<\/p>\n<p>Good things are shap\u00ading on the hori\u00adzon and Google\u2019s\u00a0<a href=\"https:\/\/www.imperialviolet.org\/\">Adam Lan\u00adg\u00adley<\/a>given the power of hav\u00ading con\u00adtrol over both servers and the most pop\u00adu\u00adlar browser is press\u00ading ahead. Their servers widely sup\u00adport TLS 1.2 with AES-GCM. Chrome has the best TLS sup\u00adport al\u00adready. Ad\u00addi\u00adtion\u00adally, its\u00a0<a href=\"https:\/\/www.google.com\/intl\/en\/chrome\/browser\/canary.html\">Ca\u00adnary<\/a>\u00a0re\u00adleases now have grown sup\u00adport for\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/ChaCha20#ChaCha_variant\">ChaCha20<\/a>\u00a0which is an ex\u00adtremely fast yet se\u00adcure stream ci\u00adpher by\u00a0<a href=\"http:\/\/cr.yp.to\/djb.html\">Dan Bern\u00adstein<\/a>\u00a0and\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Poly1305-AES\">Poly1305<\/a>a great\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Message_authentication_code\">MAC<\/a>\u00a0of the same\u00a0pedi\u00adgree.<\/p>\n<p>Now if peo\u00adple just stopped using old browsers and we could roll out<a href=\"http:\/\/en.wikipedia.org\/wiki\/Server_Name_Indication\">SNI<\/a>\u00a0and manda\u00adtory TLS 1.2.<\/p>\n<\/article>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>How to Disable Weak SSL Protocols and Ciphers in IIS March 17th, 2011 Wayne Zimmerman <\/p>\n<p>I recently undertook the process of moving websites to different servers here at work. This required that university networking group scan the new webserver with a tool called Nessus. Unfortunately this turned up several errors, all of them had to [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/2792"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2792"}],"version-history":[{"count":4,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/2792\/revisions"}],"predecessor-version":[{"id":2802,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/2792\/revisions\/2802"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}