【问题标题】:How to enable HTTPS for standalone Wiremock如何为独立的 Wiremock 启用 HTTPS
【发布时间】:2016-10-04 10:49:05
【问题描述】:

概述:

我使用了wiremock Standalone 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 连接的解决方案,我将不胜感激。

【问题讨论】:

  • 您的密钥库密码与“密码”不同吗? (文档明确指出“密钥库的密码必须为“password”。”)
  • 不,我基于wiremock https 文档创建了密钥库,并使用“密码”作为我的密钥库通行证

标签: https wiremock


【解决方案1】:
  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

【讨论】:

    【解决方案2】:

    我遇到了这个问题,我想模拟一个在页面加载期间调用的对第三方的 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多