Den perfekte SSL Cipher og kombination af software?

Vi har nok allesammen et website, eller, måske endda et https/ssl enabled website.

 

Eller også burde du måske have, men ikke lige har fået gjort det, fordi det er lidt besværligt, det er jeg nok enig i, det er besværligt, og ikke helt så simpelt som “switch it on”.

 

Dette blogindlæg startede med en kunde henvendte sig og spurgte hvorfor vi brugt RC4 som en del af de tilladte ciphers (ikke RC4 alene, men i en kombination med andet) på GratisDNS, da det anses for at være en svagere algoritme.

 

Svaret er simpelt, det var fordi med RC4 kan man modstå BEAST, men man har senere ændret anbefalingen til at slå RC4 fra, og så lade browserne om at håndtere BEAST problemet.

 

Nuvel, tilbage til apache’s conf og slå RC4 fra. Reteste, og se tilfreds ud igen.

 

Jeg tester altid med http://www.ssllabs.com/ssltest , og som minimum må være at få en A rating og tage kritikpunkterne til sig og vurdere om de er noget man skal gøre noget ved nu, eller lave en plan for hvordan de skal forbedres.

Jeg ville måske ønske at dette mere blev en standard for folk med ssl enabled sites, end en forvirret tanke i mit hoved, nu når der er værktøjer til at teste ens website, og har været, i et stykke tid.

 

feks:

https://www.ssllabs.com/ssltest/analyze.html?d=skat.dk&hideResults=on

Denne service burde nok få en ny, og ikke standard sslcipher lagt ind, bla til at slå ssl v2 helt fra, en opgradering til openssl 1.0.x og ikke 0.9.8 kunne måske også få den lidt mere med på beatet.

Nogen påstår at ovenstående site kun har de lave protocoler enabled for at kunne vejlede brugere i at opdatere deres pre 1999 pc’er. Jeg har ikke testet denne påstand, jeg tvivler dog personligt.

 

Et andet eksempel, som trænger til gennemgang er:

 

https://www.ssllabs.com/ssltest/analyze.html?d=mit3f.dk&hideResults=on

Igen, ssl2 skal slås fra, og der fremstår tydeligt andre hints til hvad der kunne være 3F’s store performance problem på deres dagpenge hjemmeside når de har mange besøgende (hint hint), samtidigt med at der er åbent for insecure renegotiation.

 

Og listen fortsætter, og er lang, og her sidder jeg stadig og fedter med at få de sidste 5 eller 10 procent score :)

https://www.ssllabs.com/ssltest/analyze.html?d=login.hk.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=elefantporten.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=billetlugen.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=rejsekort.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=statensadministration.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=borger.dk&hideResults=on (muligvis svækket med vilje, men..)

https://www.ssllabs.com/ssltest/analyze.html?d=apoteket.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=tivoli.dk&hideResults=on

https://www.ssllabs.com/ssltest/analyze.html?d=jysk.dk&hideResults=on

 

Mit absolut bedste resultat for mine egne servers er:

 

Hvilket leder mig tilbage til der hvor jeg startede, softwaren.

 

Ovenstående er en apache2.4.x og en openssl 1.0.x, en apache 2.2.x kan simpelthen ikke få Forward Secrecy support i samme klasse, men du kan opnå samme score ved at følge nedstående ciphers fra min apache config, så en plan for hvordan du kommer fra 2.2 til 2.4, der er lidt overraskelser på vejen, især hvis du har været umoden og pilfinger agtig som mig, og rodet i configfilen steder man ikke burde, og ikke bare lavet includes.

 

mine pt hot settings, i en include fil, til apache er:

SSLSessionCache        “shmcb:/var/run/ssl_scache(512000)”
SSLSessionCacheTimeout  300

SSLCipherSuite -ALL:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on

Du kan også vælge helt at slå compression fra (ZLIB) i openssl under compiling på FreeBSD i ports, men i apache kan du gøre det med

SSLCompression off

HUSK NU AT INCLUDERE DIN CA’S INTERMEDIATE CERT!

Det er den hyppiste årsag til problemer efter man har installeret certifikatet, fejlen fremgår som “chain incomplete” på ssllabs side, men fremhæves ikke væsentligt. Hold derfor øje med dette! Det er også tydeligt især hvis visse besøgende får ssl certifikat fejl, på trods af alt virker “korrekt”, dette er også et certifikat chain issue.

SSLCertificateChainFile /usr/local/etc/apache/ssl.cacrt/alphassl.cacrt

Lav en hurtig httpd -t og apachectl graceful og se om du ikke fik bedre score ud af det.. Og får du bedre score end mig, så skriv gerne i kommentarene :)

Men husk, det er ikke et mål med 100/100/100/100 i score, hvis ingen kan besøge dit site, fordi ingen browsers (også mobil telefoner og diverse gamle opsætning, tænk på dine kunder, hvordan besøger de dig, med hvad, og husk du helst gerne vil beholde dem alle når du har strammet skruen) ville kunne finde ud af det, og det er lige her at det hele kammer lidt over. Hvor er grænsen mellem sikker nok og funktionel nok.

Derfor nytter det ikke noget bare at skrue op til TLS 1.2 og efterlader alt andet, derfor må vi også acceptere at vi skal revurdere og kigge på vores ssl sites, og deres anbefalinger løbende.

På den anden side giver det heller ikke mening at lade stå til, hvis de F sites ikke forbedre sig, så var det måske en idé helt at slå ssl fra, da det mere udgør en falsk tryghed for at det her er sikkert.

Jeg har også undervejs eksperimenteret med mod_spdy, som feks kører på en af vores apache 2.2.x servers.

Men lav erfaringer med SSL opsætningen, det er nødvendigt. Jo mere erfaring, jo bedre når der er ting der skal ændres, og knap så magisk.

 

Pssst, du er også altid velkommen til at købe et certifikat hos hos, du finder garage tilbudene på surl.dk/ssl  Men så forventer jeg også du opnår en rimelig score :)

 

pps: jeg kunne vælge at inkludere en test af mine ynglings tale objekter her, men den test kan du jo selv kører: https://www.ssllabs.com/ssltest/analyze.html?d=www.????

2 Comments

  1. Loke Dupont

    January 8, 2014 at 2:34 pm

    How to make you apache behave as nicely as https://www.ssllabs.com/ssltest/analyze.html?d=server.x10d.dk

    First, make sure you have a recent OpenSSL, for FreeBSD users, this might entail getting openssl for ports. Secondly configure as so:
    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite ECDHE-RSA-AES128-SHA256:EDH+AES:AES128-GCM-SHA256:EDH:RC4:HIGH:!MD5:!aNULL:!EXPORT:!DES:!RC4+RS

    Also, note that i don’t support IE 6, if this is an issue, you might have to enable a ciphersuite specifically for it. Make sure to place it last in the cipherorder.

  2. Peter Makholm

    March 12, 2014 at 10:25 am

    https://bettercrypto.org/ kan man finde vejledning til flere forskellige typer servere. Både forskellige webservere, men også andre services.

    Med konfiguration B får jeg A- (100 / 95 / 80 / 90). Gradingen er sat ned fordi Microsoft-browsere ikke vil understøtte Forward Secrecy med denne opsætning. Der er en mere sikker konfiguration, men kræver mere af browserne og er derfor ikek så velunderstøttet.

Leave a Reply