Springboot配置使用ssl,使用https
2017-09-21 00:02
766 查看
SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议分为两层,SSL记录协议建立在TCP之上,为高层协议提供数据封装、压缩、加密等基本功能支持。SSL握手协议建立在SSL记录协议之上,用户实际数据传输开始前进行身份验证、协商加密算法、交换加密秘钥。
本人这里用的系统是deepin,然后生成命令如下(找不到keytoo命令的先去配置java环境)
我指定的名字叫tomcat.keystore 别名叫tomcat,密码自己设置,我这里用的tomcat,最后那个直接按得回车
2.将这个tomcat.keystore拷贝到项目根目录下(项目根目录,比如我的idea项目叫spring-cloud-demo01,然后这里我这个module叫springbootmy,所以我们的证书应该放在spring-cloud-demo01下)
此刻启动项目,输入
https://localhost:8443/即可
后面像你平时输入http://www.baidu.com会自动跳转到https
看下实现吧,在运行主类里面,加入如下代码
此时运行http://localhost:8080,会自动跳转到https://localhost:8443
1.生成证书,可以使自签名或者从SSL证书授权中心获得的。
JDK中keytool是一个证书管理工具,可以生成自签名证书。本人这里用的系统是deepin,然后生成命令如下(找不到keytoo命令的先去配置java环境)
我指定的名字叫tomcat.keystore 别名叫tomcat,密码自己设置,我这里用的tomcat,最后那个直接按得回车
keytool -genkey -alias tomcat -keyalg RSA -keystore /home/gzr/tomcat.keystore
2.SpringBoot配置SSL
1.先建立一个index.html到src/main/resources/static下,待会作为测试2.将这个tomcat.keystore拷贝到项目根目录下(项目根目录,比如我的idea项目叫spring-cloud-demo01,然后这里我这个module叫springbootmy,所以我们的证书应该放在spring-cloud-demo01下)
3.让后配置application.properties
#端口号 server.port=8443 #你生成的证书名字 server.ssl.key-store=tomcat.keystore #密钥库密码 server.ssl.key-store-password=tomcat server.ssl.keyStoreType=JKS server.ssl.keyAlias:tomcat
此刻启动项目,输入
https://localhost:8443/即可
后面像你平时输入http://www.baidu.com会自动跳转到https
看下实现吧,在运行主类里面,加入如下代码
package com.gzr; import org.apache.catalina.Context; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; @SpringBootApplication public class SpringbootmyApplication { public static void main(String[] args) { SpringApplication.run(SpringbootmyApplication.class, args); } /** * it's for set http url auto change to https */ @Bean public EmbeddedServletContainerFactory servletContainer(){ TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory(){ @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint=new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential SecurityCollection collection=new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector(){ Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8443); return connector; } }
此时运行http://localhost:8080,会自动跳转到https://localhost:8443
相关文章推荐
- spring boot 配置 https|ssl
- Springboot项目使用Nginx 并配置 HTTPS
- Spring Boot SSL [https]配置例子
- spring boot 配置https和SSL
- Spring RestTemplate 配置 SSL https (使用 Spring @MVC)
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- 在Spring Boot中使用Https
- 配置http使用mod_ssl模块工作于https模型
- nginx使用ssl模块配置HTTPS支持
- spring-boot+nginx+tomcat+ssl配置笔记
- Nginx使用ssl模块配置https
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- Spring Boot 属性配置和使用
- apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)
- nginx使用ssl模块配置HTTPS支持
- Spring Boot 属性配置和使用
- Apache Https(使用mod_ssl)配置(Linux Platform):