第一步:证书申请(使用jdk方式免费申请,cmd命令)
keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365
第二步:设置密码————>将生成的文件复制到项目的resources目录下
第三步:在springboot应用的配置文件中增加ssl配置
# properties方式
# https端口号.
server.port = 443
# 证书的路径.
server.ssl.key-store = classpath:keystore.p12
# 证书密码,请修改为您自己证书的密码.
server.ssl.key-store-password = 123456
# 秘钥库类型
server.ssl.key-store-type = PKCS12
# 证书别名
server.ssl.key-alias = tomcat
# yml方式
server:
port: 443
ssl:
key-store: classpath:keystore.p12
key-store-password: 123456
key-store-type: PKCS12
key-alias: tomcat
第四步:启动类加两个Bean
@Bean
public Connector connector(){
Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(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;
}
第五步:写一个测试controller
第六步:启动项目(端口占用错误请看下面的解决方案)
端口占用解决方案:
再打开任务管理器找到PID是刚刚查到的PID的进程或服务,结束掉。
最后测试:
测试结果:可以正常访问页面,http请求重定向到https。