[size=medium]是用SpringBoot开发项目要求用HTTPS协议进行访问,配置很简单,需要简单的几步就可以完成。
[b][color=red]1.自己生成keystore->将csr文件申请证书颁发机构->证据机构返回crt证书->配置到spring boot框架中[/color][/b]
[color=blue]1.需要一个证书,可以自己生成或者购买。下面是我们通过keytool自己生成。
生成命令: keytool -genkey -alias tomcat -keyalg RSA -keystore name.keystore
然后按照提示填信息,可以随便写,但要记住(特别是别名,密码) [/size]
[img]http://static.oschina.net/uploads/space/2016/1021/112401_Arwb_2408834.png[/img]
[size=medium]会在当前目录生成一个name.keystore的证书.[/color]
[color=red]其中tomcat是别名 可以随便起,name.keystore也是随便起,其中keystore是后缀不能改[/color]
[color=blue]2. 导入证书(买的cer证书)
keytool -import -trustcacerts -alias tomcat -file intermediate.cer -keystore name.keystore[/color]
[color=red]此时会报 “回复中的公共密钥与密钥库不匹配”错误
原因是 导入时的别名 tomcat 与 第1步的生成证书时的别名tomcat重复
别名改一下别重复就行。
比如将tomcat改为tomcat1 如下:
keytool -import -trustcacerts -alias tomcat1 -file intermediate.cer -keystore name.keystore[/color]
3.将name.keystore文件拷贝到项目的classpath路径中
4.在application.properties中配置HTTPS
[color=red]server.port=8843
server.ssl.key-store=intel.keystore
server.ssl.key-alias=tomcat
server.ssl.key-password=123456
server.ssl.key-store-type=JKS[/color]
到这儿就改为支持https了
5.如果想再兼容http,在webconfig文件中 加入如下代码:[/size]
[size=medium]
这就是默认当http请求时,自动重定向到https请求中去!
这就完成了SpringBoot的HTTPS协议配置,重新启动后访问https://localhost:8443/proName 即可[/size]
[b][color=red]1.自己生成keystore->将csr文件申请证书颁发机构->证据机构返回crt证书->配置到spring boot框架中[/color][/b]
[color=blue]1.需要一个证书,可以自己生成或者购买。下面是我们通过keytool自己生成。
生成命令: keytool -genkey -alias tomcat -keyalg RSA -keystore name.keystore
然后按照提示填信息,可以随便写,但要记住(特别是别名,密码) [/size]
[img]http://static.oschina.net/uploads/space/2016/1021/112401_Arwb_2408834.png[/img]
[size=medium]会在当前目录生成一个name.keystore的证书.[/color]
[color=red]其中tomcat是别名 可以随便起,name.keystore也是随便起,其中keystore是后缀不能改[/color]
[color=blue]2. 导入证书(买的cer证书)
keytool -import -trustcacerts -alias tomcat -file intermediate.cer -keystore name.keystore[/color]
[color=red]此时会报 “回复中的公共密钥与密钥库不匹配”错误
原因是 导入时的别名 tomcat 与 第1步的生成证书时的别名tomcat重复
别名改一下别重复就行。
比如将tomcat改为tomcat1 如下:
keytool -import -trustcacerts -alias tomcat1 -file intermediate.cer -keystore name.keystore[/color]
3.将name.keystore文件拷贝到项目的classpath路径中
4.在application.properties中配置HTTPS
[color=red]server.port=8843
server.ssl.key-store=intel.keystore
server.ssl.key-alias=tomcat
server.ssl.key-password=123456
server.ssl.key-store-type=JKS[/color]
到这儿就改为支持https了
5.如果想再兼容http,在webconfig文件中 加入如下代码:[/size]
@Configuration
public class WebConfig {
@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory =
new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
//SecurityConstraint必须存在,可以通过其为不同的URL设置不同的重定向策略。
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
factory.addAdditionalTomcatConnectors(createHttpConnector());
return factory;
}
private Connector createHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8080);
connector.setRedirectPort(8843);
return connector;
}
}
[size=medium]
这就是默认当http请求时,自动重定向到https请求中去!
这就完成了SpringBoot的HTTPS协议配置,重新启动后访问https://localhost:8443/proName 即可[/size]