环境 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 ?
1
hantsy 2021-01-03 13:16:23 +08:00
Java 项目应该 JKS 都是可以的。
|
2
hantsy 2021-01-03 13:23:16 +08:00
证书这东西跟服务器有什么关系?
Java 最常见的就是用 JDK 自带的的 Keytool 生成。 默认 keytool 生成生成的证书,在浏览器中会被挡住。但 keytool 可以合并第三方权威证书,比如 CA,Let‘sEncrpt 就可以解决浏览器的问题了。 |
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 |
4
hantsy 2021-01-03 13:33:43 +08:00
@u6b7b5fc3 这种如果官方文档没说明应该尝试看源代码中的《《《测试代码》》》。https://docs.spring.io/spring-framework/docs/current/reference/html/index.html
|
5
hantsy 2021-01-03 13:35:41 +08:00
不过回过头,加证书不一定要在你的 java 程序里面,部署的时最常见的一种方法是放在前面一层的 Reverse Proxy ( Side Car )里面去,如 Ngnix 之类。
|
6
learningman 2021-01-03 13:57:44 +08:00
一般都是 nginx 反代,然后这些传输层的协议用 nginx 来处理
|