Citrix Blogs

Scoring an A+ at SSLlabs.com with Citrix NetScaler – 2016 update

The moving target has moved again. With my last SSLlabs blog post now a year-old and producing an “A-“ — it seemed time for an update.

Welcome to my third blog post on getting an “A+” score.

As always, I’ll detail how the “A+” can be achieved and thanks to 11.0.65.35 firmware you’ll be pleased to learn that all MPX ciphers now also work on the VPX!

My new “cheat sheet” for an A+

1. Disable SSLv3

2. Ensure TLSv1.2 is enabled

3. Ensure RC4 ciphers are disabled.

4. Set your custom cipher group to preference Elliptic Curve Diffie–Hellman Exchange (ECDHE).

5. Allow secure renegotiation

Moving from an A to an A+

1. Ensure both your server certificate and your intermediate certificates have an SHA2/SHA256 signature.

2. Implement Strict Transport Security by inserting a custom header using a rewrite policy bound to your vServer. See here for details.

Note: support for the TLS_FALLBACK_SCSV to prevent protocol downgrade attacks (also an A+ prerequisite) has been built-in since 10.5.57

Copy and paste commands

1. Create a custom cipher group preferencing ECHDE ciphers.

add ssl cipher custom-ssllabs-cipher
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-ECDHE-RSA-AES128-GCM-SHA256
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-ECDHE-RSA-AES-256-SHA384
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-ECDHE-RSA-AES-128-SHA256
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-ECDHE-RSA-AES256-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-ECDHE-RSA-AES128-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1.2-DHE-RSA-AES128-GCM-SHA256
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-DHE-RSA-AES-256-CBC-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-DHE-RSA-AES-128-CBC-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-AES-256-CBC-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName TLS1-AES-128-CBC-SHA
bind ssl cipher custom-ssllabs-cipher -cipherName SSL3-DES-CBC3-SHA

2. Unbind the DEFAULT cipher group from your vServer, and bind the custom group.
unbind ssl vserver Name_of_NetScaler_vServer -cipherName DEFAULT
bind ssl vserver Name_of_NetScaler_vServer -cipherName custom-ssllabs-cipher
bind ssl vserver Name_of_NetScaler_vServer -eccCurveName ALL

3. Allow secure renegotiation initiated by the NetScaler.
set ssl parameter -denySSLReneg FRONTEND_CLIENT

4. Create a rewrite action and policy to insert the STS header.
add rewrite action insert_STS_header insert_http_header Strict-Transport-Security "\"max-age=157680000\""
add rewrite policy enforce_STS true insert_STS_header

5. Bind the rewrite policy

Note this example assumes NetScaler Gateway; this line could be “bind lb vserver” or similar.

bind vpn vserver Name_of_NetScaler_vServer -policy enforce_STS -priority 100 -gotoPriorityExpression NEXT -type RESPONSE

Protected

That’s it; you will now score an “A+”.

Do remember however that ssllabs.com is just an opinion, and we’re not necessarily recommending this for your environment, as always testing is paramount.

How does my score compare to others?

SSLLabs have published this data here.

Reading the summary for May 05, 2016 we can see that of 140,865 sites surveyed by ssllabs.com 14.5% scored an “F”, and 6.5% (9,096) managed an “A+” — a significant improvement on last year.

Frequently asked questions

1. Should we bind a DH key?

2. Is there any performance impact to enabling ECDHE?

Exit mobile version