Привет всем, недавно я работал над платформой автоматизации тестирования с использованием 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”