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