You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Wiremock/Mockserver配置自定义域名用于通配符证书测试?

实现方案

结论

你描述的通配符证书验证场景完全可以通过WireMock或MockServer两款Java生态下的服务模拟工具实现,以下给出WireMock的实操方案:

步骤1:生成含通配符域名的密钥库

首先使用JDK自带的keytool工具生成包含*.dev.domain通配符证书的PKCS12格式密钥库,执行命令如下:

keytool -genkeypair -alias wildcard-dev -keyalg RSA -keysize 2048 \
  -storetype PKCS12 -keystore keystore.p12 -validity 365 \
  -dname "CN=*.dev.domain, OU=Test, O=Test, L=Beijing, ST=Beijing, C=CN" \
  -storepass changeit -keypass changeit

你也可以导入已有的通配符证书到密钥库中使用。

步骤2:启动WireMock并加载自定义密钥库

独立运行模式

直接通过启动参数指定HTTPS端口和密钥库路径即可:

java -jar wiremock-jre8-standalone-2.35.0.jar \
  --https-port 8443 \
  --https-keystore ./keystore.p12 \
  --keystore-password changeit \
  --keystore-type PKCS12

JUnit集成模式

在测试代码中初始化WireMock时传入HTTPS配置:

@Rule
public WireMockRule wireMockRule = new WireMockRule(options()
    .httpsPort(8443)
    .keystorePath("./keystore.p12")
    .keystorePassword("changeit")
    .keystoreType("PKCS12")
);

步骤3:自定义域名路由配置

不需要修改WireMock的服务绑定配置,仅需要在被测客户端所在的主机上修改hosts文件,添加如下映射即可:

<WireMock服务所在IP> test.dev.domain

被测客户端访问https://test.dev.domain:8443时,请求会自动路由到WireMock服务,WireMock返回的通配符证书可正常匹配该域名,即可验证客户端对通配符证书的支持逻辑。

可选:多域名Stub匹配

如果需要针对不同的二级域名返回不同的模拟响应,可以通过匹配Host请求头实现,示例如下:

WireMock.stubFor(get(urlEqualTo("/check"))
    .withHeader("Host", equalTo("test.dev.domain"))
    .willReturn(aResponse()
        .withStatus(200)
        .withBody("Matched test.dev.domain")));

MockServer适配方案

如果偏好使用MockServer,仅需要在启动时指定自定义密钥库参数即可:

java -jar mockserver-netty-5.15.0-jar-with-dependencies.jar \
  -Dmockserver.ssl.keyStorePath=./keystore.p12 \
  -Dmockserver.ssl.keyStorePassword=changeit \
  -serverPort 8443

后续域名路由配置逻辑和WireMock一致。


内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:24:01