Как добавить файл хранилища ключей с помощью библиотеки jmeter в коде Java - PullRequest
0 голосов
/ 19 июня 2020

Как я пытался добавить файл keystore.jks в приложение jmeter, перейдя к Параметры> Диспетчер SSL> там выберите. jks , и во время выполнения нам нужно указать пароль / кодовую фразу для этого файла, и он будет работать, как и я пытаюсь имитировать c аналогичную вещь, используя библиотеку jmeter в Java, но не смог найти для этого никакой альтернативы.

вроде есть ли способ добавить файл .jks через Java код с использованием библиотеки jmeter, чтобы добиться того же, что я сделал в приложении jmeter?

это то, что я пробовал использовать библиотеку jmeter для java, ALIAS_VALUE, ENDPOINT_VALUE, CONTENT_PATH_VALUE, API_KEY_VALUE используются для маскировки исходного значения из соображений безопасности .

StandardJMeterEngine jmeterEngine = new StandardJMeterEngine();
        JMeterUtils.setJMeterHome("C:/Users/pmaiya/Downloads/apache-jmeter-5.2.1/apache-jmeter-5.2.1");
        JMeterUtils.loadJMeterProperties("C:/Users/pmaiya/Downloads/apache-jmeter-5.2.1/apache-jmeter-5.2.1/bin/jmeter.properties");
        JMeterUtils.initLocale();
        System.setProperty("javax.net.ssl.keyStore", "C:/Users/pmaiya/Documents/Zoom/identity.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", "123456");

        HashTree testPlanHashTree = new HashTree();




        JmeterKeyStore.getInstance("JKS").load(new FileInputStream("C:/Users/pmaiya/Documents/Zoom/identity.jks"), "123456");
        JmeterKeyStore.DEFAULT_ALIAS_VAR_NAME.contentEquals("ALIAS_VALUE");

        JmeterKeyStore.getInstance("JKS", 0, -1, "test").load(new FileInputStream("C:/Users/pmaiya/Documents/Zoom/identity.jks"), "123456");


       SSLManager.getInstance().configureKeystore(true, 0, -1, "ALIAS_VALUE");
       SSLManager.isSSLSupported();





        // create http sampler
        HTTPSamplerProxy httpSampler = new HTTPSamplerProxy();
        httpSampler.setProtocol("HTTPS");
        httpSampler.setDomain("ENDPOINT_VALUE");
        httpSampler.setPath("CONTEXT_PATH_VALUE");
        httpSampler.setMethod("GET");
        httpSampler.setName("get call");
        httpSampler.setFollowRedirects(true);
        httpSampler.setAutoRedirects(false);
        httpSampler.setUseKeepAlive(true);
        httpSampler.setEnabled(true);
        httpSampler.setProperty(TestElement.TEST_CLASS, HTTPSampler.class.getName());
        httpSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());


        HeaderManager manager = new HeaderManager();
        manager.setEnabled(true);
        manager.add(new Header("apikey", "API_KEY_VALUE"));
        manager.add(new Header("Content-Type", "application/json"));
        manager.setName("headermanager"); 
        manager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
        manager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());





        LoopController loopController = new LoopController();
        loopController.setLoops(1);
        loopController.setFirst(true);
        loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
        loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
        loopController.initialize();

        //create thread group
        ThreadGroup threadGroup = new ThreadGroup();
        threadGroup.setNumThreads(1);
        threadGroup.setRampUp(1);
        threadGroup.setSamplerController(loopController);
        threadGroup.setName("get");
        threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
        threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());

        //create test plan
        TestPlan testPlan = new TestPlan();
        testPlan.setEnabled(true);
        testPlan.setName("Test Plan");
        testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
        testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
        testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());



        //Add sampler to the thread group


        HashTree threadGroupHashTree = testPlanHashTree.add(testPlan, threadGroup);
        threadGroupHashTree.add(httpSampler);
       threadGroupHashTree.add(manager);



        // Generating the JMX file
        SaveService.saveTree(testPlanHashTree, new FileOutputStream("C:/Users/pmaiya/Desktop/TestSSL.jmx"));
        jmeterEngine.configure(testPlanHashTree);
        jmeterEngine.run();            
         System.out.println("executed successfully");

1 Ответ

0 голосов
/ 24 июня 2020

Если ваше хранилище ключей содержит только один сертификат, который вам нужно использовать для шифрования на стороне клиента - установка javax.net.ssl.keyStore и javax.net.ssl.keyStorePassword, просто обязательно вызовите эти функции:

System.setProperty("javax.net.ssl.keyStore", "C:/Users/pmaiya/Documents/Zoom/identity.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");

перед этой строкой

JMeterUtils.loadJMeterProperties("C:/Users/pmaiya/Downloads/apache-jmeter-5.2.1/apache-jmeter-5.2.1/bin/jmeter.properties");

Если ваше хранилище ключей содержит> 1 сертификат и вы хотите, чтобы каждый виртуальный пользователь JMeter использовал свой собственный сертификат - go для Конфигурация хранилища ключей ( соответствующее имя класса API JMeter: org. apache .jmeter.config.KeystoreConfig ), как описано в статье Как использовать несколько сертификатов при нагрузочном тестировании защищенных веб-сайтов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...