您的位置:首页 > 编程语言 > Java开发

springboot项目 同时支持http、https

2017-12-07 14:06 761 查看
证书获取:

keytool-genkey-aliastomcat-storetypePKCS12-keyalgRSA-keysize2048-keystorekeystore.p12-validity3650

根据提示信息填写后会生成一个PKCS12格式的叫做keystore.p12的证书,之后启动SpringBoot时会引用这个证书

将生成的证书keystore.p12放置在classpath路径下

application.properties文件增加如下配置

server.ssl.key-store=classpath:keystore.p12

server.ssl.key-store-password=123456

server.ssl.keyStoreType=PKCS12

server.ssl.keyAlias:tomcat

若为application.yml,则相应增加如下配置



运行服务器,会看到打印如下:



此时访问https链接,提示如下:



表明配置成功。不安全的提示,是因为证书是免费的。

此时访问http地址是不成功的。让我们的应用支持HTTP是个好想法,但是需要重定向到HTTPS。

这需要在配置类中配置一个TomcatEmbeddedServletContainerFactorybean,代码如下:

@Bean
publicEmbeddedServletContainerFactoryservletContainer(){

TomcatEmbeddedServletContainerFactorytomcat=newTomcatEmbeddedServletContainerFactory(){

@Override
protectedvoidpostProcessContext(Contextcontext){

SecurityConstraintsecurityConstraint=newSecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollectioncollection=newSecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
returntomcat;
}

privateConnectorinitiateHttpConnector(){

Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(5555);
connector.setSecure(false);
connector.setRedirectPort(8443);
returnconnector;
}

运行服务器,会看到打印如下:



访问http://localhost:5555会自动跳转到https://localhost:8443表明配置成功

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: