Spring Boot Web后台服务器开发——添加https支持及http映射https流程实例

一、https原理

https是身披SSL外壳的http。https是一种通过计算机网络进行安全通信的传输协议,经由http进行通信,利用SSL/TLS建立全信道,加密数据包。https使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。SSL协议可以分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议如TCP之上,为高层协议提供数据封装、压缩、加密等基本功能支持;SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际数据传输开始之前,通信双方进行身份认证、协商加密算法、交换加密密钥等。在Web开发中,我们是通过HTTPS来实现SSL的。HTTPS是以安全为目标的HTTP通道,简单来说就是HTTP的安全版,即在HTTP下加入SSL层,所以说HTTPS的安全基础是SSL。(TLS是传输层加密协议,前身是SSL协议)

简而言之,使用https相比使用http:信道加密、数据安全

二、Spring Boot开发Web后台服务器添加https支持流程

默认情况下,web访问服务器的采用的是http访问和传输。

添加https支持流程:

1、证书生成:

使用SSL需要我们先生成一个证书,这个证书我们可以自己生成,也可以从SSL证书授权中心获得。以直接使用java自带的命令keytool来生成为例,生成命令如下:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

参数含义:

1.-storetype 指定密钥仓库类型

2.-keyalg 生证书的算法名称,RSA是一种非对称加密算法

3.-keysize 证书大小

4.-keystore 生成的证书文件的存储路径

5.-validity 证书的有效期

2、项目配置:

    (1)将生成的文件keystore.p12复制到项目类路径下(classpath),也即项目的根目录。

    (2)在项目的配置文件application.properties后application.yml文件下添加配置,如下:

server.ssl.key-store=keystore.p12

server.ssl.key-store-password=111111

server.ssl.keyStoreType=PKCS12

server.ssl.keyAlias:tomcat

第一行指定签名文件,第二行指定签名密码,第三行指定密钥仓库类型,第四个是别名。配置完成之后,就可以通过HTTPS来访问我们的Web后台了。

三、添加将http自动转向https的支持功能

(1)添加配置类,进行转向配置,如下:

这里将访问端口8080的http访问自动转向为端口为8088的https访问,connecter即tomcat的访问节点。

代码如下:

@Configuration
public class Http2HttpsConfig {

    /**
     * 配置服务器容器
     * @return 服务器容器
     */
    @Bean
    public EmbeddedServletContainerFactory servletContainer(){

        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection securityCollection = new SecurityCollection();
                securityCollection.addPattern("/*");
                securityConstraint.addCollection(securityCollection);
                context.addConstraint(securityConstraint);
            }
        };

        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    /**
     * 设置http到https的url映射
     * @return 连接器
     */
    @Bean
    public Connector httpConnector(){
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8088);
        return connector;
    }

}

四、实现效果:

   (1)https访问:https://localhost:8088效果如下:

(2)http访问:http://localhost:8080访问,自动转向https://localhost:8088,效果如下:

 

完成! 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个经典的Java框架,可以利用它轻松地构建Restful API。Restful API是一种现代的API开发方式,允许开发人员使用HTTP协议中的GET、POST、PUT、DELETE等方法来处理数据,同时使用JSON等格式进行数据传输。在这篇文章中,我们将使用Spring Boot来构建一个简单的Restful API实例。 首先,我们需要创建一个Spring Boot项目。我们可以使用Spring Initializr来创建一个基本的Spring Boot工程。在Spring Initializr中选择Gradle工程、Java语言、Spring Boot版本以及所需的包(包括Spring WebSpring Data JPA、Spring Boot Devtools等),然后点击Generate按钮生成项目。 接下来,我们需要创建一个实体类。在本例中,我们将创建一个名为User的实体类,该类具有id、name和age三个属性。我们需要使用注解来将实体类映射到数据库中。 然后我们需要创建一个控制器类。在本例中,我们将创建一个名为UserController的控制器类,该类具有四种HTTP方法(GET、POST、PUT、DELETE),用于处理数据的获取、新增、修改和删除。 最后,我们需要配置数据源,以便我们能够将数据持久化到数据库中。在本例中,我们将使用MySQL作为我们的数据源。我们需要在application.properties文件中配置数据库连接信息。 完成上述步骤后,我们可以启动项目并测试我们的Restful API了。我们可以使用POSTMAN等工具来测试不同的HTTP方法,并检查API的返回结果是否符合预期。 总体来说,Spring Boot是构建Restful API的好选择,它提供了开箱即用的功能,可以让我们轻松地构建一个可靠的API。通过上述简单的步骤,我们可以构建一个简单的Restful API实例,这对于需要进行API开发的项目来说,是一个很好的参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值