• SpringBoot配置Https


    HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1]  。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面

    生成证书

    使用Java JDK自带生成SSL证书的工具keytool

    生成证命令

    C:UsersAdministrator>keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keysize 2048 -keystore "D:/tomcat.keystore"

    通过此命令运行,则CMD命令窗口会提示输入密钥库口令

    -alias 别名
    -keypass 指定生成密钥的密码
    -keyalg 指定密钥使用的加密算法(如 RSA)
    -keysize 密钥大小
    -validity 过期时间,单位天
    -keystore 指定存储密钥的密钥库的生成路径、名称
    -storepass 指定访问密钥库的密码

    域名证书,可以通过阿里 或 腾讯云 来进行申请

    参考,腾讯云域名证书申请流程:https://cloud.tencent.com/document/product/400/6814

    项目配置证书

    导入证书,把生成的tomcat.keystore放在resources里面

    application.properties 或 application.yml 配置文件中配置相关https内容

    server.port=8443
    
    # 开启https,配置跟证书对应
    server.ssl.enabled=true
    server.ssl.key-store=classpath:tomcat.keystore
    # server.ssl.key-store-type=JKS
    server.ssl.key-store-type=JKS
    # 密码
    server.ssl.key-store-password=123456
    # springboot2.x不需要配置
    server.ssl.key-password=123456
    # 别名
    server.ssl.key-alias=tomcat

    配置http协议跳转https

    package com.dingsheng;
    
    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.web.embedded.tomcat.TomcatServletWebServerFactory;
    import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class DingshengApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DingshengApplication.class, args);
        }
    
        // SpringBoot2.x配置HTTPS,并实现HTTP访问自动转向HTTPS
        @Bean
        public ServletWebServerFactory servletContainer() {
            TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(){
                @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);
                }
            };
            tomcat.addAdditionalTomcatConnectors(httpConnector());
            return tomcat;
        }
    
        @Bean
        public Connector httpConnector() {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            connector.setPort(8080); // 监听Http的端口
            connector.setSecure(false);
            connector.setRedirectPort(8443); // 监听Http端口后转向Https端口
            return connector;
        }
    }

    相关其他博主文字,推荐大家可以参考

    https://www.cnblogs.com/huanzi-qch/p/12133872.html

     

  • 相关阅读:
    HTTP客户端
    获取IP地址和域名
    SQL语句、PL/SQL块和SQL*Plus命令之间的区别
    oracle中的游标
    oracle表问题
    精简版web浏览器
    oracle的存储过程
    数据库中的视图
    第一次作业
    折半查找
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/13488751.html
Copyright © 2020-2023  润新知