当前位置: 首页 > 知识库问答 >
问题:

Wiremck如何确定使用哪个TLS版本?

施知
2023-03-14

我有一个客户端,它通过指定TLS 1.2发送握手请求到维基,但维基用TLS 1.0版回复。我如何让维基使用1.2版

共有1个答案

颛孙霖
2023-03-14

你曾经发现如何使WireMock使用TLS 1.2吗?

编辑:要设置只支持TLS 1.2的WireMock,您必须实现您自己的HttpServerFactory,它构建您自定义的HttpServer的实例。WireMock设置如下:

WireMockServer server = new WireMockServer(
    WireMockConfiguration.options()
        .httpServerFactory(new CustomHttpServerFactory())
        .dynamicHttpsPort()
        .dynamicPort());

原始:我发现标准的WireMock实现使用JettyHttpServerFactory,它查找以下类:com.github.tomakehurst.wiremock.jetty94. Jetty94HttpServercom.github.tomakehurst.wiremock.jetty92. Jetty92HttpServer。如果找到其中一个,它将创建该类的实例。

Jetty94HttpStarter的优先级高于Jetty92HttpStarter

我的解决方案是创建Jetty92HttpServer的副本,并将其放在我的项目中的com.github.tomakehurst.wiremock.jetty92包中。

package com.github.tomakehurst.wiremock.jetty92;

import com.github.tomakehurst.wiremock.core.Options;
import com.github.tomakehurst.wiremock.http.AdminRequestHandler;
import com.github.tomakehurst.wiremock.http.StubRequestHandler;
import com.github.tomakehurst.wiremock.jetty9.JettyHttpServer;
import com.github.tomakehurst.wiremock.servlet.MultipartRequestConfigurer;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Jetty92HttpServer extends JettyHttpServer {
    private final Logger logger = LoggerFactory.getLogger(JettyStarter.class);

    public Jetty92HttpServer(final Options options, final AdminRequestHandler adminRequestHandler, final StubRequestHandler stubRequestHandler) {
        super(options, adminRequestHandler, stubRequestHandler);
    }

    @Override
    public SslContextFactory buildSslContextFactory() {
        logger.debug("Creates CustomizedSslContextFactory");
        final SslContextFactory factory = new CustomizedSslContextFactory();

        logger.debug("Exclude protocols TLS, TLSv1 and TLSv1.1");
        factory.addExcludeProtocols("TLS", "TLSv1", "TLSv1.1");

        logger.debug("Set protocol=TLSv1.2");
        factory.setProtocol("TLSv1.2");

        return factory;
    }

    @Override
    public MultipartRequestConfigurer buildMultipartRequestConfigurer() {
        return new Jetty92MultipartRequestConfigurer();
    }
}

我知道这适用于Java7,也适用于Java8。然而,我不确定它是否适用于Java9及以上版本,但我认为它应该像预期的那样工作。

我推荐以下文章,因为它们包含一些帮助我的链接:

  • 嵌入式码头上启用TLS-1.2
 类似资料:
  • 我没有指定任何GC,我认为我的JVM默认情况下没有启用任何GC。 当然,我知道 OpenJDK8 默认使用并行GC,但我认为它应该可以通过命令行打印,如下所示: < code > Java-XX:print flags final | grep Use | grep GC 我期望输出包含< code > bool UseParallelOldGC = true { product } ,但它不是:

  • 如果我记得Jasmine中有一个命令可以记录我运行到控制台的Jasmine的确切版本,但我不记得它是什么了。我肯定我以前在某个地方见过这个,现在我真的需要它,我在任何地方都找不到它。有人知道它是什么吗? 编辑:使用< code>jasmine.getEnv()发布的解决方案。versionString()不工作——对于阅读本文的任何mods来说,修复该问题是作为一个新问题开始还是在此继续更好?

  • 问题内容: 无论是从Ipython会话内部还是从脚本内部进行交互,您如何确定matplotlib正在使用哪个后端? 问题答案: 使用该函数获取一个字符串,该字符串表示正在使用哪个后端:

  • 问题内容: 我需要确定Ubuntu上安装了哪个版本的GTK + 男人似乎没有帮助 问题答案: 该建议将告诉您安装了哪个次要版本2.0。不同的主要版本将具有不同的程序包名称,因为它们可以共存于系统上(以支持使用旧版本构建的应用程序)。 即使对于通常只允许您在系统上使用一个版本的开发文件,也可以在同一系统上使用gtk 1.x版本和gtk 2.0版本(include文件位于名为gtk-1.2或gtk-2

  • 有选项可以在weblogic服务器上指定TLS或SSL 我无法访问web或app server配置,但我希望确定通过HTTPS连接到web服务器[nginx,apache http webserver]或appserver[weblogic]是否使用SSL或TLS,以及使用哪个版本。 如果