springboot 2.X 配置SSL證書 啓用HTTPS

微信小程序開發,正式上線後臺接口需要啓用HTTPS,後臺採用SpringBoot2.0進行開發,在配置SSL證書啓用HTTPS時遇到些許坑,在此做下記錄,希望能幫到和我一樣的菜鳥……

1、生成SSL證書

MAC系統:keytool -genkey -alias your.alias(別名隨便起) -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 validity 3650

Windows系統,請在JDK目錄下找到keytool.exe

keytool -genkey -alias your.alias(別名隨便起) -keypass yourpass1 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:/keys/keystore.keystore -storepass yourpass2

輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什麼?
  [Unknown]:  xxx
您的組織單位名稱是什麼?
  [Unknown]:  xxx
您的組織名稱是什麼?
  [Unknown]:  xxx
您所在的城市或區域名稱是什麼?
  [Unknown]:  beijing
您所在的省/市/自治區名稱是什麼?
  [Unknown]:  beijing
該單位的雙字母國家/地區代碼是什麼?
  [Unknown]:  china
CN=xxx, OU=xxx, O=xxx, L=beijing, ST=beijing, C=china是否正確?
  [否]:  y

請正確設置上面的參數

 

2、創建一個SpringBoot2.X項目

配置就不寫了

 

3、將生成的keystore.p12或者keystore.keystore拷貝到項目resources目錄下

4、配置入口文件

package com.yourcompany.test;

import org.apache.catalina.connector.Connector;
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 WandeTestSslApplication {

    public static void main(String[] args) {
        SpringApplication.run(WandeTestSslApplication.class, args);
    }
    //下面是2.0的配置,1.x請搜索對應的設置
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
        return tomcat;
    }

    private Connector createHTTPConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        //同時啓用http(8080)、https(8443)兩個端口
        connector.setScheme("http");
        connector.setSecure(false);
        connector.setPort(8080);
        connector.setRedirectPort(8443);
        return connector;
    }
    
}

5、配置application.yml文件

server:
  port: 8443
  ssl:
    # 證書名字
    key-store: classpath:keystore.p12

    #key-store: classpath:keystore.keystore
    # 密鑰庫密碼
    key-store-password: yourpass2
    #key-password: yourpass1 #springboot2.0不需要配置這個 T-T
    key-store-type: PKCS12
    key-alias: your.alias

 

配置到這裏,就可以運行了

6、新建Controller

@Controller
@RequestMapping("/")
public class IndexController {

    @GetMapping("/")
    public String index() {
        return "index";
    }
}

運行起來,打開瀏覽器:https://localhost:8443,會出現證書安全提示,因爲是自已生成未認證的證書,所以不用理會

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章