224 Star 2.1K Fork 461

dromara / forest

2021-12-09 14:34
1216742 dt flys 1594991700 公子骏

1.5.15版本发布了,本次添加了自定义SSL主机名验证器,以及修复了Response字符编码和gzip解压等问题

Forest已参加2021年度OSC中国开源项目评选活动,如果您喜欢Forest或对Forest感兴趣,请投上您宝贵的一票,感谢!
点击投票👉 投票

重点更新内容

自定义hostnameVerifier

定义一个实现 HostnameVerifier 接口的类

/**
 * 自定义SSL主机名/域名验证器
 */
public class MyHostnameVerifier implements HostnameVerifier {
    @Override
    public boolean verify(String s, SSLSession sslSession) {
        if ("gitee.com".equals(s)) {
            return true;
        }
        return false;
    }
}

将自定义的SSL主机名验证器配置到 Forest 的KeyStore

在Springboot项目的application.yml文件中配置
forest:
  ssl-key-stores:
    - id: keystore1
      hostname-verifier: your.site.MyHostnameVerifier

在接口中绑定

@Post(url = "/something", keyStore = "keystore1")
String postSomething(@Body body);

@SSLHostnameVerifier注解

除了在全局配置文件中的keyStore中配置外, 也可以通过相关注解直接在接口上绑定

public class MyHostnameVerifier implements HostnameVerifier {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        // 只通过域名为 gitee.com 的请求
        if ("gitee.com".equals(hostname)) {
            return true;
        }
        return false;
    }
}

通过@SSLHostnameVerifier注解绑定到接口

@Post(url = "/something")
@SSLHostnameVerifier(TrustAnyHostnameVerifier.class)
String postSomething(@Body body);

@SSLSocketFactoryBuilder注解

同理 SSLSocketFactory 也一样可以自定义,同时由@SSLSocketFactoryBuilder注解来绑定

public class MySSLSocketFactoryBuilder implements SSLSocketFactoryBuilder {

    @Override
    public SSLSocketFactory getSSLSocketFactory(ForestRequest request, String protocol) throws Exception {
        SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null,
                new TrustManager[] { new TrustAllManager() },
                new SecureRandom());
        System.out.println("do MySSLSocketFactoryBuilder");
        return sslContext.getSocketFactory();
    }
}

绑定到接口

@Post(url = "/something")
@SSLSocketFactoryBuilder(MySSLSocketFactoryBuilder.class)
String postSomething(@Body body);

更新日志

新增特性

修复问题

代码更新

  • add: @SSLHostnameVerifier 注解
  • add: @SSLSocketFactoryBuilder 注解

鸣谢

本次更新有 @AlexShi 小伙伴参与贡献,万分感谢!

2021年度OSC中国开源项目评选

Forest已参加2021年度OSC中国开源项目评选活动,如果您喜欢Forest或对Forest感兴趣,请投上您宝贵的一票,感谢!

点击投票👉 投票

Java
1
https://gitee.com/dromara/forest.git
git@gitee.com:dromara/forest.git
dromara
forest
forest

Search