Springboot配置使用ssl,使用https


  SSL(Secure Sockets Layer 安全套接層)是為網絡通信提供安全及數據完整性的一種安全協議,SSL在網絡傳輸層對網絡連接進行加密,SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通信提供安全支持。SSL協議分為兩層,SSL記錄協議建立在TCP之上,為高層協議提供數據封裝、壓縮、加密等基本功能支持。SSL握手協議建立在SSL記錄協議之上,用戶實際數據傳輸開始前進行身份驗證、協商加密算法、交換加密秘鑰。

生成證書,可以使自簽名或者從SSL證書授權中心獲得的

  JDK中keytool是一個證書管理工具,可以生成自簽名證書。本人這里用的系統是deepin,然后生成命令如下(找不到keytoo命令的先去配置java環境)我指定的名字叫tomcat.keystore 別名叫tomcat,密碼自己設置,我這里用的tomcat,最后那個直接按得回車。

keytool -genkey -alias tomcat -keyalg RSA -keystore d:/test/tomcat.keystore

 

 

 

2.SpringBoot配置SSL

 把tomcat.keystore拷貝到SpringBoot工程的 src/resources目錄下。配置application.properties

### https configuration
server.port=7443
server.ssl.key-store=d:/test/tomcat.keystore
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS

 

此刻啟動項目,跳轉到 https://localhost:8443 。在運行主類里面,加入如下代碼

package com.wx.weixin;

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.context.annotation.Bean;
import org.apache.catalina.Context;

@SpringBootApplication
public class WeixinApplication {

    public static void main(String[] args) {
        SpringApplication.run(WeixinApplication.class, args);
    }

    @Bean
    public Connector connector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8082);
        connector.setSecure(false);
        connector.setRedirectPort(7443);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
        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(connector);
        return tomcat;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM