TestAutomatisering & PerformanceTesten

SSL/TLS versie en cipher in HP LoadRunner

In deze blog wil ik even stilstaan bij de resultaten van een performance test die niet overeenkwamen met de verwachtingen die wij als team hadden. Een aantal transacties gingen in responstijd omhoog en het CPU gebruik nam flink toe. Omdat het ons veel tijd heeft gekost, deel ik dit graag met jullie zodat wij performance testers hier in de toekomst kostbare tijd mee kunnen besparen!

Uiteindelijk zagen we dat bij de SSL/TLS handshake een verkeerde cipher werd gebruikt.

Daarom beschrijf ik onderstaand hoe je er achter komt welke SSL/TLS versie en cipher je moet instellen in HP VuGen en hoe je dit dan doet.

Wat is SSL/TLS?

SSL staat voor Secure Sockets Layer en is een encryptie-protocol die de communicatie tussen computers beveiligd. Vaak wordt de term SSL gebruikt terwijl SSL veelal is vervangen door TLS (Transport Layer Security).

Het opzetten van een verbinding met een andere computer gebeurt volgens de volgende stappen:

1. Uitwisselen publieke sleutels, vergelijken ondersteunde SSL/TLS versies en afspreken versleutelmechanisme (cipher).

2. Op basis van uitgewisselde publieke sleutels wordt een gezamenlijke sleutel (session key) bepaald m.b.v. het Diffie-Hellman-mechanisme.

3. De uitwisseling van data vindt nu plaats gebaseerd op de afgesproken cipher en de session key.

Waarom zorgde het gebruik van de verkeerde cipher voor hogere responstijden en CPU toename?

De ene cipher is de andere niet. In productie wordt een zogenaamde NULL-cipher gebruikt. Oftewel, het verkeer wordt niet versleuteld. In mijn performance test gebruikte LoadRunner de default cipher ECDHE-RSA. In dit geval wordt het verkeer dus wel versleuteld en dit was dan ook de oorzaak van de hogere responstijden en CPU gebruik.

Hoe kom je nu achter de juiste SSL version en cipher?

Dit is een beetje afhankelijk van de situatie. Wordt de applicatie benaderd via een browser of via een andere applicatie?

In het geval van een applicatie die benaderd wordt via de browser, kan je de openssl tool gebruiken. Deze is beschikbaar in de bin folder van je loadrunner installatie: Virtual User Generator\bin of LoadRunner\bin.

Door de applicatie te runnen, kom je in een command prompt. Hier typ je het commando:

In de output zal dan iets staan als:

Als we het nu hebben over een applicatie die benaderd wordt door een andere applicatie, moet de SSL versie en cipher op een andere manier achterhaald worden. Dit kan bijvoorbeeld door de beheerders hiernaar te vragen of door in de (productie) logging te (laten) kijken van de web server die de applicatie bedient. Op mijn opdracht wordt Apache gebruikt en daar worden SSL protocol en cipher gelogd in de access log. In de log pattern is dit gedefinieerd als %{SSL_PROTOCOL} en %{SSL_CIPHER}. Voorbeeld:

1.1.1.1   - - <datum/tijd>  SUCCESS  TLSv1.1 ECDHE-RSA-AES256-SHA "POST /ta/ HTTP/1.1" 200

En hoe stel je de SSL_VERSION en SSL_CIPHER nu in?

In VuGen kan je SSL version en cipher instellen via de functie web_set_sockets_option.

SSL version kan ook ingesteld worden via Runtime Settings (Internet Protocol > Preferences > General > SSL version). De cipher kan hier niet ingesteld worden.

Als ik de gegevens overneem van de voorbeelden, moeten de volgende regels toegevoegd worden aan het VuGen script:

web_set_sockets_option("SSL_VERSION", "TLS1.1");
web_set_sockets_option("SSL_CIPHER_LIST", "ECDHE-RSA-AES256-SHA");

Let wel op het volgende: de oplettende lezer heeft vast al gezien dat de waarde voor SSL_VERSION niet helemaal overeenkomt met de voorbeelden. Er staat namelijk TLS1.1 i.p.v. TLSv1.1. In de Vugen Function Reference kan je de toegestane waardes terugvinden.

De toegestane waardes voor SSL_CIPHER_LIST is niet beperkt. De waarde NULL-MD5 staat bijvoorbeeld (nog) niet in deze lijst, maar wordt wel geaccepteerd en heeft ook effect bij het runnen van het script.

Ik ben heel benieuwd of dit iets is wat jezelf ook wel eens hebt meegemaakt. Ook lees ik graag of je weleens soortgelijke uitdagingen hebt gehad. Ik hoor dus graag van je 😉 !

Dit bericht is geplaatst in Performancetesten en getagd in Cipher LoadRunner SSL TLS

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Nieuws

Blijf op de hoogte

PerformanceArchitecten @The Next Web conferentie

04/07/2018

Was het een interessante conferentie? Beslist. Heeft TNW PerformanceArchitecten op nieuwe ideeën gebracht? Zeker. Heb jij TNW gemist, maar wil je je wel in vijf minuten op de hoogte laten brengen? Lees dan snel verder! En mocht je er wel zijn geweest.. We zijn benieuwd naar jouw beeld! Wat is de Next Web? Voor hen […]

De ‘waar begin ik met testautomatisering’ handleiding.

11/04/2018

Wij worden regelmatig gevraagd te helpen bij het opzetten of verbeteren van testautomatisering in een Agile omgeving bij een klant. En hoeveel ervaring je ook hebt, wat je opdracht ook precies inhoudt en in welk team je ook terechtkomt, het is altijd even zoeken waar te beginnen. Onderstaand stappenplan ondersteunt hierbij. PerformanceArchitecten organiseert veel kennissessies. Zo […]

Wat is het Bug Filter?

26/03/2018

Een algemeen gedeelde opvatting over het doel van testen binnen software ontwikkeling is “het tegenhouden van bugs en het afdekken van risico’s”. Over hoe dit vervolgens het best valt te organiseren, bestaan er echter vaak veel meningsverschillen. In deze 2 minute snack sta ik graag even stil bij een inzicht dat verhelderend werkt in deze […]

Testen? Begin bij de basis! | Het belang van unittesten

19/02/2018

Inleiding Mijn vrouw en ik zijn op dit moment bezig met het bouwen van een huis. In dit geval niet als bouwvakker of aannemer, maar dan toch wel als opdrachtgever. Spannend vinden we het zeker, leuk ook. Wat heeft dit te maken met unittesten zou je denken. Nou, het volgende… Het huis wordt namelijk gebouwd […]

De Absolute Beginners Guide voor API Testen met rest-assured.io

16/01/2018

Omdat het moeilijk was om een eenvoudige tutorial te vinden voor rest-assured.io, ben ik na eerst zelf uit te vinden hoe het werkt, maar eens begonnen met een tutorial die de absolute basics uitlegt over rest-assured. In deze post laat ik zien hoe we op een zo eenvoudig mogelijke manier een API test kunnen maken met […]

APACHE MPM (op *nix servers)

07/11/2017

Benieuwd naar de impact van het wijzigen van Apache MPM Prefork naar Worker? Lees dan door! Bij één van onze klanten heb ik dit onderzocht. Omdat dit ook interessant kan zijn voor anderen, deel ik mijn resultaten en ervaringen graag. Het is misschien wat technisch allemaal, maar voor performancetesters, de doelgroep, is het vast goed […]

Performancetesten en CI/CD, gaat dat samen?

13/10/2017

De afgelopen najaarseditie van Testnet stond onder het thema Continuous Everything vooral stil bij CI/CD en natuurlijk testen. Gezien DevOps en CI/CD ook grote invloed hebben op het vakgebied performance (testen), zijn wij blij dat we vanuit PerformanceArchitecten een bijdrage mochten leveren door middel van het delen van onze visie hierop. Onze collega René Meijboom […]

Een eerste indruk van Gauge

08/09/2017

Tijdens één van onze kennismiddagen hebben we gekeken naar het testtool Gauge. Doel van de sessie was om een beeld te krijgen wat de toegevoegde waarde van Gauge is voor een tester. Benieuwd naar onze ervaringen? Lees dan snel verder! Gauge is een open source project, gesponsord door ThoughtWorks en belooft in het kort het […]

Test Automation Framework BDD

16/06/2017

De afgelopen tijd heb ik in een opdracht collega’s mogen adviseren over de positieve impact van het Test Automation Framework BDD rondom het thema Agile. In een vorige blog ‘Transformation’ is te lezen wat BDD voor mij betekent en hoe BDD voor synergie zorgt tussen verschillende disciplines binnen Agile-teams met als doel het leveren van kwalitatief hoogwaardig […]

Creëer meer eenheid in je SpecFlow steps met Step Argument Transformations

11/04/2017

Laatst kreeg ik de vraag, “Hoe maak je in je testdata onderscheid tussen een regular expression en een gewone tekst”. Oftewel: Hoe beheer je verschillende soorten steps als ze alleen verschillen in de manier waarop data vergeleken wordt. Je hebt een veld en je wilt controleren of er een bepaalde waarde in staat, maar soms […]

SSL/TLS versie en cipher in HP LoadRunner

29/03/2017

In deze blog wil ik even stilstaan bij de resultaten van een performance test die niet overeenkwamen met de verwachtingen die wij als team hadden. Een aantal transacties gingen in responstijd omhoog en het CPU gebruik nam flink toe. Omdat het ons veel tijd heeft gekost, deel ik dit graag met jullie zodat wij performance […]

Regular Expressions en Testautomatisering, twee problemen of juist een oplossing?

25/03/2017

Bij geautomatiseerde checks wil je regelmatig een verwachte waarde controleren tegen een actuele waarde. Vroeg of laat kom je dan in aanraking met wildcards: Je wilt bijvoorbeeld weten of de tekst “Er zijn 42 resultaten gevonden” voorkomt, maar het aantal, hier 42, kan variabel zijn. Van 42 wil je dan een wildcard maken. De meest […]