springboot配置SSL自簽名證書


1.證書生成

每一個JDK或者JRE里都有一個工具,叫做:keytool,安裝了jdk或jre之后,配置好JAVA環境之后,就可以直接在控制台使用該命令生成自簽名證書:

在控制台輸入:

keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore E:\Desktop\sslkey\keystore.p12 -validity 3650

命令參數說明:

1.-alias 證書別名

2.-storetype 指定密鑰倉庫類型

3.-keyalg 生證書的算法名稱,RSA是一種非對稱加密算法 

4.-keysize 證書大小 

5.-keystore 生成的證書文件的存儲路徑和文件名

6.-validity 證書的有效期

2.Spring Boot配置SSL

將證書復制到項目根目錄,修改application.yml文件:

server:
  port: 8443
  ssl:
    key-alias: tomcat
    key-store-password: root123
    key-store-type: PKCS12
    key-store: classpath:keystore.p12

到這一步,已經可以通過HTTPS來訪問Web了

3.HTTP自動轉向HTTPS

在spring boot入口類中添加如下代碼:

①spring boot1.x的配置:

// http轉向https

@Bean
public EmbeddedServletContainerFactory servletContainer() {
  TomcatEmbeddedServletContainerFactory tomcat = 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);
    }
  };
  tomcat.addAdditionalTomcatConnectors(connector());
  return tomcat;
}

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

②springboot 2.x的配置:

    @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(connector());
        return tomcat;
    }

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

 


免責聲明!

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



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