客户端无法将 HTTPS 与 WireMock 通信:javax.net.ssl.SSLException:不支持或无法识别的 SSL 消息

client can't talk HTTPS to WireMock: javax.net.ssl.SSLException: Unsupported or unrecognized SSL message

我有以下模拟配置:

 public MockedServer() {
        super(new WireMockConfiguration()
                .httpsPort(8443)
                .keystorePath("identity.jks")
                .keystorePassword("password")
        );

        System.out.println(this.getOptions().httpsSettings());
    }

我按照this tutorial生成了密钥库

我运行测试的JAR如下:

    ProcessBuilder pb = new ProcessBuilder("java","-jar", pathToJar,
            "--Djavax.net.ssl.trustStore=" + keystore).start();

问题是客户端抛出以下异常:

javax.net.ssl.SSLException: Unsupported or unrecognized SSL message

为什么?

还值得一提的是,客户端不应该出现 SSL 证书问题,因为它(不安全地)配置为信任所有证书。

终于找到问题了。我会把它留给未来的读者:

访问端口时,您应该使用 httpsPort() 而不是 port()