Spring Boot Web开发之SSL配置

  SSL的配置是实际应用中常遇到的业务场景。其协议可分为两层:

    SSL记录协议:建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能支持。

    SSL握手协议:其建立在SSL记录协议之上,用于在实际数据传输开始前通信双方身份认证、协商加密算法、交换加密秘钥等。

  基于B/S的web应用通过HTTPS实现SSL,即在HTTP下加入SSL层,HTTPS的安全基础是SSL。因为Spring Boot用的是内置Tomcat,因而配置SSL时需要进行如下操作:

  1、生成证书

    使用SSL首先需要一个证书,可以通过自签名或者SSL证书授权中心获得。本文示范以自授权证书为例:

    jdk中有一个工具叫keytool,它就是一个证书管理工具可以用来生产自签名的证书,如下:

            

     输入命令生成秘钥:keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -keystore mykeystore.jks

            

     在当前目录下会新建mykeystore.jks文件

            

  2、Spring Boot配置SSL

    将上述文件置于项目根路径下,同时进行如下配置:

            

    启动并提交访问请求:

            

    通过上述访问发现,如果通过http访问会提示访问需要组合TLS。所以直接通过这种方式访问存在着极差的用户体验。解决这个问题就需要做下面的第三步操作。

  3、http转向https

    实际很多时候输入http会自动转向为https(比如百度试试),要Spring Boot中要实现这个功能需要配置WebServerFactory

             

            

            

            

    以上代码一般情况下通用,不用修改直接用。

 

   补充:在Spring Boot Web开发之Tomcat自动配置中对内置tomcat进行了代码方式的配置用到了WebServerFactoryCustomizer,与此文中用到的WebServerFactory就多了个Customizer,它们之间什么关系呢?看下图:

            

 
posted on 2024-04-01 15:47  池塘里洗澡的鸭子  阅读(410)  评论(0编辑  收藏  举报