Как включить HTTPS для автономного Wiremock

Обзор:

Я использовал автономную версию 2.1.11 Wiremock и сделал следующее, чтобы включить URL-адрес HTTPS для моего запроса, но безрезультатно:

  • Изучение документа http://wiremock.org/docs/running-standalone/
  • Добавляем --https-port, но ничего не произошло
  • Добавление хранилища ключей, но снова нет прогресса

Команда для запуска wiremock выглядит следующим образом:

java -jar wiremock-standalone-2.1.11.jar --port 8920 --https-port 8921 --https-keystore /home/wiremock/keystore/clientkeystore --verbose

Примечание. Я могу правильно подключиться через http-порт.


Буду признателен, если кто-нибудь поможет мне найти решение для HTTPS-соединения.


person saeedj    schedule 04.10.2016    source источник
comment
Ваш пароль хранилища ключей отличается от пароля? (В документации прямо указано, что у хранилища ключей должен быть пароль «password».)   -  person Eugene A    schedule 08.10.2016
comment
Нет, я создал базу хранилища ключей в документе Wiremock https и использовал пароль в качестве прохода хранилища ключей.   -  person saeedj    schedule 10.10.2016


Ответы (2)


  1. Создание хранилища ключей Java для Wiremock

     keytool -genkey -alias wiremock -keyalg RSA -keysize 1024 \
     -validity 365 -keypass password -keystore identity.jks -storepass password
    

    Важно --- Следуйте инструкциям, чтобы указать сведения о сертификате:

    • First and last name: this is not your name, it is the Common Name (CN), for example 'confluence.example.com'. The CN must match the fully qualified hostname of the server running Confluence, or Tomcat won't be able to use the certificate for SSL.
    • Организационная единица: это команда или отдел, запрашивающий сертификат, например «маркетинг».
    • Организация: это название вашей компании, например SeeSpaceEZ. Город, штат / провинция, код страны: это место, где вы находитесь, например Сидней, Новый Южный Уэльс, Австралия.
  2. Создайте самозаверяющий сертификат

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -config localhost.conf
    
  3. Импортировать сертификацию в хранилище ключей

     keytool -import -trustcacerts -alias mock -file localhost.crt -keystore identity.jks
    
  4. Запустите Wiremock с новым хранилищем ключей и включенным HTTPS

     java -jar wiremock-1.54-standalone.jar --https-port 8443 --https-keystore 
     ./identity.jks
    

Ресурсы:

Ответ от https://gist.github.com/mobmad/433ba54e9cb97d6d7771#1-generate-self-signed-certificate

person Jin    schedule 19.06.2018

Я столкнулся с этой проблемой, когда хотел имитировать один https-вызов ajax для третьей стороны, который вызывается во время загрузки страницы. Наша первоначальная настройка Wiremock была сделана на http, и поэтому мы получали ошибку

 was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint

Чтобы исправить это, мне просто нужно включить сервер Wiremock для прослушивания безопасного порта (см. Выделенную жирным шрифтом часть кода). См. Ниже UtilityClass, который запускает остановку WireMock Server перед каждым тестом.

public class WireMockHook {
    public static final int WIREMOCK_PORT_NUMBER = 8089;
    public static final int WIREMOCK_SECURE_PORT_NUMBER = 8043;
    public static final String WIREMOCK_HOST = "localhost";
    private WireMockServer wireMockServer;

    @Before(order = 0)
    public void startWireMock() {
        wireMockServer = new WireMockServer(wireMockConfig().httpsPort(WIREMOCK_SECURE_PORT_NUMBER).port(WIREMOCK_PORT_NUMBER));
        wireMockServer.start();
        configureFor(WIREMOCK_HOST, WIREMOCK_PORT_NUMBER);
    }

    @After(order = 0)
    public void stopWireMock() {
        wireMockServer.stop();
    }
}
person Sanjay Bharwani    schedule 27.08.2019