7

概述:

我使用了 wiremock 独立 2.1.11 并执行以下操作来为我的请求启用 HTTPS URL,但无济于事:

运行wiremock的命令如下:

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

注意: 我可以通过http端口正确连接


现在,如果有人能帮我找到 HTTPS 连接的解决方案,我将不胜感激。

4

2 回答 2

6
  1. 为wiremock生成java密钥库

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

    重要 --- 按照提示指定证书详细信息:

    • 名字和姓氏:这不是你的名字,它是通用名 (CN),例如“confluence.example.com”。CN 必须与运行 Confluence 的服务器的完全限定主机名匹配,否则 Tomcat 将无法使用 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. 使用新的密钥库和启用 HTTPS 启动wiremock

     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

于 2018-06-19T00:39:53.113 回答
0

我遇到了这个问题,我想模拟一个在页面加载期间调用的对第三方的 https ajax 调用。我们最初的wiremock设置是在http上完成的,因此我们得到了错误

 was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint

要解决这个问题,我只需要启用 Wiremock 服务器以侦听安全端口(请参阅代码的粗体部分)。请参阅下面的 UtilityClass,它在每次测试之前开始停止 WireMock 服务器。

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();
    }
}
于 2019-08-27T16:21:19.397 回答