如何为独立的Wiremock启用HTTPS

问题描述 投票:0回答:3

概述:

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

https wiremock
3个回答
8
投票
  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. 使用新的密钥库启动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


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();
    }
}

0
投票

如果您想通过 HTTPS 运行 WireMock,您有两个选择:

  • 使用默认的自签名证书,具有记录的众所周知的密码:password,或者
  • 您使用秘密密码创建自己的自签名证书。

我生成了自己的私钥,并在其上应用了密码。然后我用私钥生成了一个证书。之后,我创建了一个 pkcs 文件,其中包含私钥和证书,还需要额外的密码。您使用在 HTTPS 模式下启动 WireMock 的命令的证书将如下所示

java -jar "<WIREMOCK_HOME>\wiremock-standalone-3.6.0.jar" 
--https-port 8443 --https-keystore <PATH_TO_PKCS12_FILE>\wiremock.p12 --keystore-password <PKCS12_FILE_PASSWORD> --keystore-type pkcs12 --key-manager-password <PRIVATE_KEY_PASSWORD> 

正如我已经写过的,pkcs12 密钥库类型将私钥和证书结合在一起。 (https://www.ssl.com/how-to/export-certificates-private-key-from-pkcs12-file-with-openssl/)这个组合存储有密码,私钥也有密码就我而言。 我在这两种情况下都使用了相同的密码。或者您可以省略私钥上的密码。 如果您想同时禁用http模式,请添加

--disable-http

© www.soinside.com 2019 - 2024. All rights reserved.