微信小程序开发,正式上线后台接口需要启用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,会出现证书安全提示,因为是自已生成未认证的证书,所以不用理会