wp做网站,广东网站备案要多久,Wordpress网站开发收费,做网站公司平台知识点1#xff1a;springboot切换内嵌Web服务器#xff08;Tomcat服务器#xff09;
知识点2#xff1a;生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS
★ Spring Boot默认的Web服务器#xff08;Tomcat#xff09;
▲ 基于Servlet的应用#xff08;使用Spring MV…知识点1springboot切换内嵌Web服务器Tomcat服务器
知识点2生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS
★ Spring Boot默认的Web服务器Tomcat
▲ 基于Servlet的应用使用Spring MVC框架spring-boot-starter-web.jar默认依赖spring-boot-starter-tomcat.jar因此它默认使用Tomcat作为内嵌服务器。▲ 基于Reactive的应用使用Spring WebFlux框架spring-boot-starter-webflux.jar默认依赖spring-boot-starter-reactor-netty.jar因此它默认使用Reactor Netty作为内嵌服务器。▲ 切换作为内嵌服务器。对pom.xml进行两步修改1在spring-boot-starter-web.jar依赖配置内使用exclusions.../元素排除spring-boot-starter-tomcat.jar依赖。2显式添加spring-boot-starter-jetty.jar或spring-boot-starter-undertow.jar依赖。由此可见要让Spring Boot应用切换使用Web服务器基本不需要修改任何代码只需要修改pom.xml文件即可。演示
spring-boot-starter-web 默认依赖 Tomcat 内置服务器
改为 Jetty 服务器
改为 Undertow 服务器 ★ 配置HTTPS
目的把请求路径 http://xxxxx 改成 https://xxxxx 如图原本普通的项目启动后是http的
早期 早期的普通网站可能大部分都是基于HTTP的。http最大问题是所有请求数据、响应数据都是明码只要任何网络嗅探都可以轻松获取请求、和响应数据。现在 绝大部分网站都已经改为给予HTTPSHTTPS所有请求数据、响应数据都是加密后的数据只要任何网络嗅探都只能获取请求、和响应加密后的数据。唯一缺点是性能略慢。目前传统的HTTP基本已经被淘汰了现在大多用的都是HTTPS协议它就是基于SSLSSL代表Secure Socket Layer,安全网络层。▲ 只需如下两步即可。
1生成或购买SSL证书。开发者自己生成的SSL证书通常只是用于测试如果部署成实际运行的项目浏览器会提示该SSL证书是不可信任的证书。2在application.properties或application.yaml文件中通过server.ssl.*属性配置即可。备注如果希望应用能同时支持HTTPS连接器和HTTP连接器推荐使用application.properties或application.yaml配置HTTPS然后使用编程式的方式添加HTTP连接器。——一般不推荐这么干。▲ 生成SSL证书如果打算购买CA机构颁发的SSL证书这一步可以省略的命令 keytool -genkey -v -alias spring -keyalg RSA -keystore F:\myCode\crazyCode\SpringBoot\SSLtest\spring.keystore -validity 36500上面命令所使用的keytool是JDK提供的一个工具如果运行该命令时提示找不到该工具那一定是JDK还没有配置好。keytool命令的-genkey是它的子命令用于生成key。该子命令支持如下常用选项-alias指定证书别名。
-keyalg指定算法。
-keystore指定将证书存储在哪里。
-validity指定证书的有效时间指定为36500意味着有效期是100年。配置 HTTPS 演示
第一步先生成 SSL 证书
先按步骤生成自己的 SSL 证书仅用于测试用。 输入这条命令 keytool -genkey -v -alias spring -keyalg RSA -keystore F:\myCode\crazyCode\SpringBoot\SSLtest\spring.keystore -validity 36500
第二步在yml配置文件中进行配置
在application.properties或application.yaml文件中通过server.ssl.*属性配置即可。
把证书拷贝到resources目录下。 因为项目要打包运行肯定得把ssl证书放在项目中 然后在yml配置的时候使用类加载路径下的 spring.keystore 作为 ssl 证书库
在yml配置ssl启动项目可以看到 http 变成 https 了 原本没配置ssl证书之前是 http 这样的
配置成功后进行访问https://localhost:8080/webFirst 因为ssl证书是自己生成的所以肯定会报危险因为自定义的ssl证书是可以随便写的。 接受风险并继续可以看到能用 https 访问了 用 http 访问就变成这个样子了
配置了 https 然后通过查看消息头是属于 HTTP/1.1
小bug
bug详情 在yml配置的时候出现这么个bug java.io.FileNotFoundException: class path resource [spring.keystore] cannot be resolved to URL because it does not exist 表示找不到我放在项目的证书 需要再pom文件中添加这个配置才行 resourcesresourcedirectorysrc/main/java/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resource/resources★ 配置HTTP/2
现状目前的主流浏览器都支持HTTP/2协议。HTTP/2是为了解决现有HTTP/1.1性能不好、安全性不足的问题才出现的。
Spring Boot不支持传统HTTP的HTTP/2它只支持基于HTTPS的HTTP/2因此在配置HTTP/2之前必须先配置SSL。▲ Undertow的HTTP/2支持在yml配置文件中将server.http2.enabled属性 设置为true即可。▲ 从Tomcat 9.0.x开始只要使用JDK 9将server.http2.enabled属性设为true即可。Spring Boot内置已经是Tomcat 9以上的版本。▲ Jetty的HTTP/2支持需要添加额外的库再将server.http2.enabled属性设为true即可。首先需要添加HTTP2 Server服务器org.eclipse.jetty.http2: http2-server还需要根据环境来添加如下JAR包JDK 9 : org.eclipse.jetty:jetty-alpn-java-serverJDK 8 : org.eclipse.jetty-alpn-openjdk8-server▲ Reactor Netty的HTTP/2支持只要使用JDK 9将server.http2.enabled属性设为true即可。总结一下可发现只要JDK使用JDK 9大部分Web服务器只要将server.http2.enabled属性设为true即可。除了Jetty要增加额外的库之外Tomcat要使用Tomcat 9.0