V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
u6b7b5fc3
V2EX  ›  Java

Spring WebFlux+Netty 中怎么配置 HTTP/2?

  •  
  •   u6b7b5fc3 · 2021-01-03 12:35:15 +08:00 · 1937 次点击
    这是一个创建于 1412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境 JDK11+SpringBoot2.4.1+Spring WebFlux+默认 Netty 服务器,看了一下官方文档说是不同服务器配置不一样:

    里面的链接有关于 Netty 的配置:

    但是不知道怎么集成到 SpringBoot 中:

    另一方面证书是阿里云买的,没有提供 Netty 直接相关的证书:

    额外搜索了一下好像没有现成的 Demo (准确来说 Github 上有,但是有的用的是 Undertow,有的用的是 OpenSSL 生成的证书),以前使用 Spring MVC+Tomcat 的时候可以直接下载证书并在配置文件中配置:

    server:
      http2:
        enabled: true
      ssl:
        key-store: xxxx
        key-store-type: xxxx
        key-store-password: xxxx
    

    就可以使用了,但是 Netty 的好像不可以。

    所以现在的问题是到底怎么配置才能集成 HTTP/2 ?

    8 条回复    2021-01-03 16:14:15 +08:00
    hantsy
        1
    hantsy  
       2021-01-03 13:16:23 +08:00
    Java 项目应该 JKS 都是可以的。
    hantsy
        2
    hantsy  
       2021-01-03 13:23:16 +08:00
    证书这东西跟服务器有什么关系?

    Java 最常见的就是用 JDK 自带的的 Keytool 生成。

    默认 keytool 生成生成的证书,在浏览器中会被挡住。但 keytool 可以合并第三方权威证书,比如 CA,Let‘sEncrpt 就可以解决浏览器的问题了。
    hantsy
        3
    hantsy  
       2021-01-03 13:29:21 +08:00
    Servlet 4 标准默认启用 Http 2,以前在 Glassfish 里面测试的时候,访问会自动转向 Https,证书似乎是部署的时候 Glassfish 自动管理的。

    https://github.com/hantsy/javaee8-by-example-gitbook/blob/master/servlet-push.md
    hantsy
        4
    hantsy  
       2021-01-03 13:33:43 +08:00
    @u6b7b5fc3 这种如果官方文档没说明应该尝试看源代码中的《《《测试代码》》》。https://docs.spring.io/spring-framework/docs/current/reference/html/index.html
    hantsy
        5
    hantsy  
       2021-01-03 13:35:41 +08:00
    不过回过头,加证书不一定要在你的 java 程序里面,部署的时最常见的一种方法是放在前面一层的 Reverse Proxy ( Side Car )里面去,如 Ngnix 之类。
    learningman
        6
    learningman  
       2021-01-03 13:57:44 +08:00
    一般都是 nginx 反代,然后这些传输层的协议用 nginx 来处理
    u6b7b5fc3
        7
    u6b7b5fc3  
    OP
       2021-01-03 16:13:44 +08:00
    @hantsy 谢谢大佬提醒
    u6b7b5fc3
        8
    u6b7b5fc3  
    OP
       2021-01-03 16:14:15 +08:00
    @hantsy 应该用反代的,不应该直接写在 SpringBoot 里面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4952 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.