How to enable HTTPS for standalone Wiremock

后端 未结 2 993
北恋
北恋 2021-01-03 03:12

Overview:

I used wiremock standalone 2.1.11 and did the following to enable HTTPS URL for my request but to no avail:

  • Studying the d
相关标签:
2条回答
  • 2021-01-03 03:41
    1. Generate java key store for wiremock

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

      Important --- Follow the prompts to specify the certificate details:

      • 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.
      • Organizational unit: this is the team or department requesting the certificate, for example 'marketing'.
      • Organization: this is your company name, for example 'SeeSpaceEZ'. City, State / province, country code: this is where you're located, for example Sydney, NSW, AU.
    2. Create the self-signed certification

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -config localhost.conf
      
    3. Import certification into keystore

       keytool -import -trustcacerts -alias mock -file localhost.crt -keystore identity.jks
      
    4. Start wiremock with the new keystore and HTTPS enabled

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

    Resources:

    The answer is from https://gist.github.com/mobmad/433ba54e9cb97d6d7771#1-generate-self-signed-certificate

    0 讨论(0)
  • 2021-01-03 03:44

    I faced this issue where I wanted to mock one https ajax call to third party which is invoked during the page load. Our original wiremock setup was done on http and hence we were getting the error

     was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint
    

    To fix that I simply need to enable the Wiremock server to listen on Secure port (Please see the bold part of the code). Please see below the UtilityClass which starts stop the WireMock Server before each tests.

    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();
        }
    }
    
    0 讨论(0)
提交回复
热议问题