zoukankan      html  css  js  c++  java
  • Springboot配置ssl使用https

    SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议分为两层,SSL记录协议建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能支持。SSL握手协议建立在SSL记录协议之上,用户实际数据传输开始前进行身份验证、协商加密算法、交换加密秘钥。

    1.生成证书,可以使自签名或者从SSL证书授权中心获得的。

    JDK中keytool是一个证书管理工具,可以生成自签名证书。

    JDK中keytool是一个证书管理工具,可以生成自签名证书。 
    本人这里用的系统是deepin,然后生成命令如下(找不到keytoo命令的先去配置java环境) 
    我指定的名字叫tomcat.keystore 别名叫tomcat,密码自己设置,我这里用的tomcat,最后那个直接按得回车

    keytool -genkey -alias tomcat -keyalg RSA -keystore /home/gzr/tomcat.keystore

    我的命令执行记录如下,(前提:在本地要创建目录,否则会失败)

    结果是生成了对应的文件,如下:

    2.SpringBoot配置SSL

    1.先建立一个index.html到src/main/resources/static下,待会作为测试 
    2.将这个tomcat.keystore拷贝到项目根目录下(项目根目录,比如我的idea项目叫spring-cloud-demo01,然后这里我这个module叫springbootmy,所以我们的证书应该放在spring-cloud-demo01下) 
    3.让后配置application.properties

    复制代码
    #端口号
    server.port: 8443
    #你生成的证书名字
    server.ssl.key-store: E:work
    ave	omcat.keystore
    #密钥库密码
    server.ssl.key-store-password: duan123
    server.ssl.keyStoreType: JKS
    server.ssl.keyAlias: tomcat
    复制代码

    此刻启动项目,输入 https://localhost:8443/即可。

    3、配置自动跳转

    后面像你平时输入http://www.baidu.com会自动跳转到https看下实现吧,在运行主类里面,加入如下代码

    复制代码
    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 SpringbootmyApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootmyApplication.class, args);
        }
    
        
      @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){//2.0之前的对象是
    EmbeddedServletContainerFactory
    TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory(){//2.0之前的对象是
    TomcatEmbeddedServletContainerFactory
    protected void postProcessContext(Context context){
    SecurityConstraint securityConstraint=new SecurityConstraint();
    securityConstraint.setUserConstraint("CONFIDENTITAL");
    SecurityCollection collection=new SecurityCollection();
    collection.addPattern("/*");
    securityConstraint.addCollection(collection);
    context.addConstraint(securityConstraint);
    }
    };
    webServerFactory.addAdditionalTomcatConnectors(connector);
    return webServerFactory;
    }

    @Bean
    public Connector httpConnector(){
    Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8080);
    connector.setSecure(false);
    connector.setRedirectPort(8443);
    return connector;
    }
    }
    复制代码

    此时运行http://localhost:8080,会自动跳转到https://localhost:8443

  • 相关阅读:
    Mysql数据库--自学笔记--2
    Mysql数据库--自学笔记--1
    Python--作业3--模拟ATM程序的流程
    Python--数据存储:json模块的使用讲解
    如果我能成功,你也能
    有意注意到底有多重要
    没有人喜欢听废话——讲重点
    回顾你的一天是多么的重要
    思考的力量
    多问为什么,肯定不会错
  • 原文地址:https://www.cnblogs.com/zouhong/p/11827145.html
Copyright © 2011-2022 走看看