Spring Boot中启动HTTPS
一,生成https 的证书
1,在相应的根目录下
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
解释:
1.-storetype 指定密钥仓库类型 2.-keyalg 生证书的算法名称,RSA是一种非对称加密算法 3.-keysize 证书大小 4.-keystore 生成的证书文件的存储路径 5.-validity 证书的有效期(天)
2,步骤
配置文件application.properties添加https支持:
#设定端口号
service.port=8443 #指定签名文件 server.ssl.key-store=keystore.p12 #指定签名密码 server.ssl.key-store-password=111111(与生成的keystore.p12输入的密码 一直) #指定密钥仓库类型 server.ssl.keyStoreType=PKCS12 #设置别名 server.ssl.keyAlias:tomcat
3,springboot 中创建configure ,使得http 自动转向https
@Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { @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(8080); connector.setSecure(false); //监听到http的端口号后转向到的https的端口号 connector.setRedirectPort(8443); return connector; }
4,测试 IP:port/xxxx ------------------>>>>>>>> https:IP:port/xxx