zoukankan      html  css  js  c++  java
  • 十一.spring-boot 添加http自动转向https

    SSL是为网络通信提供安全以及保证数据完整性的的一种安全协议,SSL在网络传输层对网络连接进行加密。

    例:cas 的单点登陆就用到了SSL

    一、安全证书的生成

    1、可以使用jdk自带的证书生成工具,jdk自带一个叫keytool的证书管理工具,可以用它来实现签名的证书。

    2、先配置好基本的java环境,ctrl+r 输入cmd ,进入java 的目录

    3、例:生成一个别名叫tomcat 的证书   先使用命令进入jdk的bin   这里的密码是123456

    keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456

    image

    4、获取一个tomcat.keystore的文件,将这个文件放到项目的目录中

    image

    二、配置SSL

    1、编辑application.properties这个文件

    server.port=8443
    server.ssl.key-store=tomcat.keystore
    server.ssl.key-password=changeit
    server.ssl.key-store-type=JKS
    server.ssl.key-alias=tomcat

    我这里用的是默认密码:changeit

    三、http转向https

    1、这里需要配置使用TomcatEmbeddedServletContainerFactory这个类在启动方法类中加入以下:

    2、注意端口的修改

    package com.example;
    
    import org.apache.catalina.Context;
    import org.apache.catalina.connector.Connector;
    import org.apache.tomcat.util.descriptor.web.SecurityCollection;
    import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class SpringBootHttpsApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootHttpsApplication.class, args);
        }
        @Bean
        public EmbeddedServletContainerFactory servletContainer() {
            TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
                @Override
                protected void postProcessContext(Context context) {
                    SecurityConstraint constraint = new SecurityConstraint();
                    constraint.setUserConstraint("CONFIDENTIAL");
                    SecurityCollection collection = new SecurityCollection();
                    collection.addPattern("/*");
                    constraint.addCollection(collection);
                    context.addConstraint(constraint);
                }
            };
            tomcat.addAdditionalTomcatConnectors(httpConnector());
            return tomcat;
        }
    
        @Bean
        public Connector httpConnector() {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            //Connector监听的http的端口号
            connector.setPort(8080);
            connector.setSecure(false);
            //监听到http的端口号后转向到的https的端口号
            connector.setRedirectPort(8443);
            return connector;
        }
    
    }

    三、测试使用

    1、查看启动信息

    image

    2、访问地址localhost:8080/AmazeUI-2.7.2/login.html 我自定义了一个html网页,它已经转向到了8443端口

    image

    3、浏览器的地址栏中显示不安全:因为这个证书是不收信任的,传统一般都企业都是需要购买此证书的

  • 相关阅读:
    web ERP前端技术选型
    poj1741 Tree 树的分治
    HDU4694 未AC
    zoj4100 Balanced Number 数位DP
    树的最小表示法 UVA 12489
    2013长沙网赛 I题 Grand Prix
    2013第八场多校
    2013第六场多校
    2013第五场多校
    ZOJ3724 树状数组+离线处理
  • 原文地址:https://www.cnblogs.com/xxt19970908/p/6736370.html
Copyright © 2011-2022 走看看