## 一、申请SSL证书,
网上很多教程都是使用 java 自带的 keytool 工具来生成,这样做在开发阶段问题不大,可是放到生产环境就不太好了,一个是这个证书会被伪造,另一个不被浏览器认可,客户也会觉得不好看。
推荐使用 Freessl.cn 网提供的免费SSL,简单几步即可搞定,不会弄的自行百度
生成证书之后,建议用 Freessl 网 SSL格式工具转换成 pfs或者jks格式
把这个文件复制到springboot项目 resources根目录下
二、spring配置文件(yml配置)
server:
port: 9043 # https端口
ssl:
enabled: true
key-store-type: PKCS12 # 证书使用的格式
key-store-password: 123456 # 证书密码
key-store: classpath: asHua.pfx #证书路径
http:
port: 9000
# 写http:port的时候没有提示,不用管,你写上就可以
三、在启动类注入两个bean自动将HTTP转换成HTTPS(想简单的直接复制)
@Bean
public Connector connector(){
System.err.println("自动转HTTPS");
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(9000);
connector.setSecure(false);
connector.setRedirectPort(9043);
return connector;
}
@Bean
public TomcatServletWebServerFactory servletContainer(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;
}
四、重启服务,
输入 localhost:9000 你会发现网址变成了
https://localhost:9043 自动跳转过来了