①首先需要https的证书,被认可的证书需要申请,但是使用java/bin下的keytool,可以生成自己的证书,因此需要自己设置浏览器认可。在输入时,会提醒你设置秘钥库口令,这个需要自己设置就可以了。
命令行cmd输入:
C:\softwareinstallation\jdk1.8.0_121\bin>keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore li.p12 -validity 365
-genkey :创建一个新的秘钥
-alias: keystore的别名
-keyalg: 加密算法为RSA
-keysize: 秘钥长度
-validity:秘钥的有效时间为365天
-li.p12 :秘钥的名字
②生成秘钥后需要将li.p12复制到工程根目录中,然后在配置文件中设置证书的路径
server:
port: 8081
ssl:
key-store: li.p12
key-alias: tomcathttps
key-store-password: 123456
③此时访问可以支持https,但是却不支持http了,因此需要进行重定向。增加配置文件
@Configuration
public class TomcatConfig {
@Bean
TomcatServletWebServerFactory tomcatEmbeddedServletContainerFactory() {
TomcatServletWebServerFactory factory = 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);
}
};
factory.addAdditionalTomcatConnectors(createTomcatConnector());
return factory;
}
private Connector createTomcatConnector() {
Connector connector = new
Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//在这里不能https和http同时使用同一个端口,如果这样,就是就会报端口占用重复
connector.setPort(8080);//监听8080端口,然后重定向到8081
connector.setSecure(false);
connector.setRedirectPort(8081);
return connector;
}
}
④最后访问,http会自动重定向到https
https://localhost:8081/findallteachers
http://localhost:8080/findallteachers