• SSL配置及练习


    1.SSL简介

    SSL(Secure Sockets Layer,安全套结层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP与各种应用层协议之间,

    为数据通信提供安全支持。SSL协议可分为俩层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能

    的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等

    如何在Spring Boot上配置SSL呢?

    因为Spring Boot 用的是内嵌的Tomcat,因而我们做SSL配置的时候需要做如下的操作:

    1.生成证书

    每一个JDK或者JRE里都有一个工具叫keytool,它是一个证书管理工具,可以用来生成自签名的证书

    在C盘用户路径下,生成一个.keystore文件,就是我们要用的证书文件

    2.Spring Boot配置SSL

    将.keystore文件复制到项目的根目录,然后在application.properties中做如下SSL配置:

    此时,启动项目

    至此SSL集成结束;

    还可以进阶下:http 转向 https

     简单说:地址栏输入的是http,但是会自动转向到https

    要实现这个功能,我们需配置TomcatEmbeddedServletContainerFactory,并且添加Tomcat的connector来实现。

     @Bean
        public EmbeddedServletContainerFactory servletContainerFactory() {
            TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory
                    = new TomcatEmbeddedServletContainerFactory() {
                @Override
                protected void postProcessContext(Context context) {
                    SecurityConstraint securityConstraint =
                            new SecurityConstraint();
                    securityConstraint.setUserConstraint("CONFIDENTIAL");
    
                    SecurityCollection collection = new SecurityCollection();
                    collection.addPattern("/*");
                    securityConstraint.addCollection(collection);
                    context.addConstraint(securityConstraint);
                }
            };
            tomcatEmbeddedServletContainerFactory.addAdditionalTomcatConnectors(httpConnector());
            return tomcatEmbeddedServletContainerFactory;
        }
    @Bean
        public Connector httpConnector() {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            //设置有别于现有系统的端口号,监听此端口,实现转向
            connector.setPort(8443);
            connector.setSecure(false);
            //现有系统端口号
            connector.setRedirectPort(8080);
            return connector;
        }

  • 相关阅读:
    网络七层协议
    Sizeof与Strlen的区别与联系
    Java面试宝典(说说&和&&的区别)
    Java se基础(类的属性及关键字)
    了解java中垃圾回收机制
    MYSQL常用函数(系统信息函数)
    MYSQL常用函数(类型转化函数)
    MYSQL常用函数(格式化函数)
    MYSQL常用函数(控制流函数)
    【CF-1362】B. Johnny and His Hobbies
  • 原文地址:https://www.cnblogs.com/meiCode/p/7685847.html
Copyright © 2020-2023  润新知