Enregistrer un scénario Jmeter d’un site en HTTPS via le proxy HTTP

Mise à jour du 14 juillet 2010 : La nouvelle version 2.4 de JMeter permet maintenant d’enregistrer une session de navigation en HTTPS. Le billet ci-dessous est devenu obsolète.

 

Vous devez effectuer un test de charge sur une application accessible seulement en HTTPS (protocole HTTP avec la couche SSL). Pour la préparation du tir de charges, vous pensez évidemment à enregistrer une session de navigation du scénario fonctionnel qui sera utilisée plus tard pour le tir.

Le problème c’est que lorsque vous lancez le mode proxy de JMeter pour enregistrer votre session de navigation, cela ne marche pas (erreur de méthode non implémentée…) ou bien vous avez coché le « attempt HTTPS spoofing » et la aussi vous avez une erreur (java impossible de se connecter).

Voici ce qu’il faut faire pour que tout cela fonctionne, c’est-à-dire que vous puissiez enregistrer une session de navigation sur un site HTTPS, au vue de faire un tir de charges ensuite.

La première étape est la configuration du module proxy dans JMeter, pour cela il faut :

  1. laisser le port « normal », en général celui par défaut, le port 8080
  2. cocher la case « Attempt HTTPS Spoofing »
  3. choisir le type d’échantillon HTTP à « HTTP Request HTTPClient »
  4. (non visible sur la capture), on peut aussi devoir décocher l’option « Follow Redirects » afin d’éviter le rebasculement en HTTPS que font certains sites (serveurs) durant la session d’enregistrement

 

Jmeter Proxy configuration HTTPS

La configuration de tentative d’usurpation de HTTPS (Attenpt HTTPS Spoofing) va demander à JMeter de changer le protocole des requêtes HTTP envoyées depuis votre navigateur (ce dernier étant configuré pour utiliser le proxy JMeter, cf capture suivante), en requête HTTPS.

Le choix de « HTTP Request HTTPClient » par rapport à « HTTP Request » est lié à l’utilisation de l’API HTTPClient (Apache Jakarta Commons HttpClient) qui permet de faire des requêtes en HTTPS (ce qui n’est pas possible avec le mode par défaut « HTTP Request ».

Coté du navigateur web que vous allez utiliser pour enregistrer la session de navigation via le proxy JMeter, c’est la configuration « standard », on mets le bon port du proxy JMeter pour tous les protocoles.

 

Configuration du navigateur Web

Ensuite on va sur le site hébergeant l’application cible, mais attention en HTTP (sans le S). Et oui, c’est JMeter qui va convertir les requêtes en HTTPS.

 

Accès via HTTP

On a donc le schéma suivant :

Navigateur -----http-----> JMeter Proxy -----https-----> Site Cible

JMeter enregistrera les requêtes HTTPClient avec le protocole https.

 

Echantillon pour test de charges en HTTPS

Ensuite, quand votre scénario est prêt, vous avez des requêtes HTTPClient, vous n’aurez plus qu’à lancer votre tir. Le scénario suivant (et normal) sera utilisé :

JMeter (tests charges) -----https-----> Site Cible

Bon courage.

 

./

Flattr this!

4 commentaires

  1. blogring.org dit :

    Blogring pour httpclient…

    Relatif entrées de blogue…

  2. […] En effet, JMeter ne permet pas d’enregistrer directement une session de navigation d’un site HTTPS dans un script. Il y a la fonctionnalité « Tenter d’usurper HTTPS » qui permet le faire indirectement, mais cela ne marche pas toujours notamment quand il y a des redirections lors d’une authentification HTTPS. Voir ce billet. […]

  3. rosière dit :

    Bonjour,

    Merci pour cette info,
    J’ai téléchargé la « fake key » depuis: https://issues.apache.org/bugzilla/attachment.cgi?id=24079&action=edit

    J’ai utilisé « SSL Manager » pour l’importer. Mais quel est le mot de passe?

  4. Milamber dit :

    Il n’y a pas besoin de télécharger la fake key pour utiliser JMeter sur un site HTTPS.
    Si tu suis les instructions du billet ci-dessus, normalement cela doit fonctionner.
    A+