微信小程序開發,正式上線後臺接口需要啓用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,會出現證書安全提示,因爲是自已生成未認證的證書,所以不用理會