为什么要写这篇文章,主要是被网上的文章坑了一晚上!!!!!
创建证书的时候一定要按照提示把信息补充完整!
创建证书的时候一定要按照提示把信息补充完整!
创建证书的时候一定要按照提示把信息补充完整!
重要的事情说三遍!下面开始配置。
1、使用jdk自带的 keytools 创建证书
keytool -genkey -alias tomcat -keyalg RSA -keystore ./server.keystore
输入密钥库口令:123456 //这里设置证书的密钥
然后按照下图操作即可,一定要按照提示把信息补充完整,不然你的项目可能会报错的!
2、在server.keystore文件复制到springboot项目的根目录,在application.properties添加如下配置
server.port=5646
server.ssl.key-store=server.keystore
server.ssl.key-alias=tomcat
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS
3、http访问自动转https访问
package com.example.demo.config;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HttpsConfig {
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(5645);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(5646);
return connector;
}
}
当访问5645端口,是http
访问后变成5656端口,变成https(虽然还是显示不安全哈哈哈)
建议买个域名去阿里云搞个证书哇,如果一直报证书算法类型错误的建议把信息补充完整哈.