概述:
我使用了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 连接的解决方案,我将不胜感激。
为wiremock生成java密钥存储
keytool -genkey -alias wiremock -keyalg RSA -keysize 1024 \
-validity 365 -keypass password -keystore identity.jks -storepass password
重要---按照提示指定证书详细信息:
创建自签名证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -config localhost.conf
将证书导入密钥库
keytool -import -trustcacerts -alias mock -file localhost.crt -keystore identity.jks
使用新的密钥库启动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
我遇到了这个问题,我想模拟一个在页面加载期间调用的对第三方的 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();
}
}
如果您想通过 HTTPS 运行 WireMock,您有两个选择:
我生成了自己的私钥,并在其上应用了密码。然后我用私钥生成了一个证书。之后,我创建了一个 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