Рубрики
Без рубрики

Настройка сертификатов SSL PME в REST Assured

Привет всем, недавно я работал над платформой автоматизации тестирования, используя REST-assured, которая вызывает a… Помеченный java, ssl, openssl, будьте уверены.

Привет всем, недавно я работал над платформой автоматизации тестирования с использованием REST-assured, которая вызывает конечную точку, требующую использования SSL-сертификата. Сертификат SSL был в формате PEM (файл .crt и .key), а код был на Java. Это означало импорт файлов PEM в хранилище ключей JKS, чтобы его можно было использовать в проекте Java, и создание вспомогательного метода, который будет использоваться во время настройки HTTP-запроса.

Это руководство предназначено для Windows.

Сначала вам понадобятся Java7+ и OpenSSL, после их загрузки и установки добавьте оба в свои переменные окружения PATH.

Получите сертификат PEM (.pem, .cer, crt) и его закрытый ключ (.key). Поместите файлы в один каталог, вам также понадобится кодовая фраза закрытых ключей, допустим, в этом случае кодовая фраза – abcd.

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

Откройте командную строку — я использую PowerShell но вы можете использовать любой другой; и перейдите к папке, в которой вы храните файлы, например, допустим, она находится под C:\User\user.name\cert каталог.

При желании, сначала вы можете добавить сертификат в свое хранилище ключей, выполнив следующую команду:

PS C:\Users\user.name\cert> keytool -import -file certificate.crt -alias example -keystore javaKeyStore.jks

После выполнения команды вам будет предложено ввести пароль, введите 123456 . Командная строка отобразит информацию о сертификате и спросит вас, хотите ли вы добавить его в свое хранилище ключей:

Trust this certificate? [no]:  yes

Двигаясь дальше, давайте создадим хранилище ключей. Сначала создайте хранилище ключей p12, после чего вы можете создать хранилище ключей JKS.

Выполните следующую команду:

openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -certfile certificate.crt -name "certname" -out keystore.p12

Вам будет предложено ввести пароль, поэтому введите abcd , после чего вам будет предложено ввести пароль, поэтому введите 123456

Если вы заглянете в свой каталог, то увидите только что созданный файл keystore.p12.

Затем введите следующую команду для создания хранилища ключей JKS:

keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS

Вам будет предложено ввести пароль, поэтому введите 123456 . После этого вы увидите файл keystore.jks в каталоге.

Для этого примера я разместил хранилище ключей внутри проекта в папке ресурсов.

import java.io.FileInputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;

import io.restassured.config.SSLConfig;

public class CertHelper {

  public static SSLConfig getSslConfig() {
    String password = "123456";
    KeyStore keyStore = null;
    try {
      FileInputStream fis = new FileInputStream("src/main/java/resources/keystore.jks");
      keyStore = KeyStore.getInstance("JKS");
      keyStore.load(
          fis,
          password.toCharArray());

    } catch (Exception ex) {
      System.out.println("Error while loading keystore >>>>>>>>>");
      ex.printStackTrace();
    }
    if (keyStore != null) {
      org.apache.http.conn.ssl.SSLSocketFactory clientAuthFactory = null;
      try {
        clientAuthFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, password);
      } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
      } catch (KeyManagementException e) {
        e.printStackTrace();
      } catch (KeyStoreException e) {
        e.printStackTrace();
      } catch (UnrecoverableKeyException e) {
        e.printStackTrace();
      }
      return new SSLConfig().with().sslSocketFactory(clientAuthFactory).and().allowAllHostnames();
    }
    else return  null;
  }
}

Наконец, чтобы использовать сертификат, вы должны назначить его свойству конфигурации Rest Assured.

RestAssured.config = RestAssured.config().sslConfig(CertHelper.getSslConfig());

И это все.

Если у вас возникли какие-либо проблемы с сертификатом, вам может потребоваться изменить кодовую фразу закрытого ключа ( abcd ), чтобы она совпадала с паролем хранилища ключей ( 123456 ).

Оригинал: “https://dev.to/stefanbalaban/ssl-pme-certificates-setup-in-rest-assured-5gh9”