Https背景与证书在spring boot项目中的使用
https背景(本人学习参考中觉得不错的几篇文章)
- https如何解决安全问题
- HTTPS 理论基础及其在 Android 中的最佳实践
- 什么是https
关于https的个人总结
- 总所周知http是通过明文传输的,其不够安全,传输过程中容易被劫持查看传输内容甚至修改内容,经常修改内容,用户经常打开某些网站会有一些奇怪的广告,这就是因为该网站使用http请求,导致请求内容被修改,新增的广告。
- https非对称加密(公钥私钥)与对称加密保证数据安全。
- 代理抓包(中间人攻击)原理就是通过自己伪造一对公钥私钥替代服务器的公钥私钥给用户使用。
- 通过数字证书保证公钥合法性,避免中间人攻击。
使用了https,并且证书是由CA机构颁发,Charles抓包还是明文
- 这个问题的原因与证书是由CA机构或者还是自签证书无关,关键在于app端是否对证书进行验证了,如果对证书没有进行认证,那么Charles还是会自生成一套证书替代服务端的证书。
App对证书进行校验,那么如何处理证书过期或者服务端更新证书的问题?
- 证书设计了一个证书链的概念,一般证书链分三层,顶层为root证书[A]、二级证书[B]、三级证书[C](颁布给用户),只要A信任B,B信任C,只要客户端校验A可信,即C可信,无法被替换。
- 因此客户端校验root证书即可,全球信赖的CA的有一百多个,这些基本上都内置到操作系统、浏览器中了,这些CA的更新都会由系统来管理,减少客户端的复杂度。
- 由于系统可以自己导入证书,为防止被人抓取数据分析数据结构,可以使客户端限制CA证书必须为系统内置的,或者只对某一家CA的证书进行信任。
服务端https配置
将生成私有证书放在classpath下application.properties中配置server.port = 443
server.ssl.key-store = classpath:sample.jks
server.ssl.key-store-password = secret
server.ssl.key-password = password
同时支持http
@Bean
public Integer port() {return 80;//return SocketUtils.findAvailableTcpPort();
}
@Bean
public EmbeddedServletContainerFactory servletContainer() {TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();tomcat.addAdditionalTomcatConnectors(createStandardConnector());return tomcat;
}
private Connector createStandardConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");connector.setPort(port());return connector;
}
http重定向到https
@Value("${server.port}")private int port;
@Bean
public EmbeddedServletContainerFactory servletContainer() {TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {@Overrideprotected void postProcessContext(Context context) {SecurityConstraint securityConstraint = new SecurityConstraint();securityConstraint.setUserConstraint("CONFIDENTIAL");SecurityCollection collection = new SecurityCollection();collection.addPattern("/*");securityConstraint.addCollection(collection);context.addConstraint(securityConstraint);}};tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());return tomcat;
}
private Connector initiateHttpConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");connector.setScheme("http");connector.setPort(8080);connector.setSecure(false);connector.setRedirectPort(port);return connector;
}
转载于:https://www.cnblogs.com/vincent0928/p/6925893.html
Https背景与证书在spring boot项目中的使用相关推荐
- Spring Boot项目中使用RestTemplate调用https接口出现 unable to find valid certification path to requested target
问题描述:Spring Boot项目中使用RestTemplate调用https接口出现以下错误: PKIX path building failed: sun.security.provider.c ...
- spring boot 项目源码_Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent
前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent><groupId& ...
- 在Spring Boot项目中使用Spock框架
转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...
- scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...
在java开发中定时任务的实现有多种方式,jdk有自己的定时任务实现方式,很多框架也有定时任务的实现方式.这里,我介绍一种很简单的实现方式,在Spring Boot项目中使用两个注解即可实现. 在sp ...
- Spring Boot 项目中Java对象的字符串类型属性值转换为JSON对象的布尔类型键值的解决方法及过程
文章目录 场景描述 示例说明 解决历程 @JsonFormat是否能解决问题? 万能方案-调试 替代方案 补充知识 Java对象与JSON对象的序列化与反序列化 相关注解说明 后记 场景描述 在Spr ...
- Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...
- spring boot 项目中遇到的错误(tomcat 400)
spring boot 项目 get传入的参数是 json数组的时候 会报400 原因:是因为tomcat的版本太高 https://blog.csdn.net/fxz1535567862/arti ...
- Spring Security是什么,以及如何在Spring Boot项目中整合Spring Security并且使用它,下面我们通过一个登录案例简单介绍一下Spring Security。
1.什么是Spring Security? 在了解Spring Security之前,我们是不是应该先思考一个问题,我们自己写的web案例一般都需要先登录,之后登录之后才能访问其他页面,或者说我们不同 ...
- spring boot项目中处理Schedule定时任务
默认,springboot已经支持了定时任务Schedule模块,所以一般情况已经完全能够满足我们的实际需求,一般来说,没有必要在加入其他类似于:quartz 另外,在这里提一个实际项目中,关于定时任 ...
最新文章
- 一些实用的注册表封装类
- 我们遇到困难怎么办?
- 学习鸟哥的Linux私房菜笔记(13)——用户管理
- 帧间编码的预测自适应量化系数扫描排序
- openstack中手动修改虚拟机IP后不能通信
- Java工作笔记-发送SOAP协议请求
- 水平布局的HTML表单
- 认证授权介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记109
- 周获 4700 Star 全球疫情数据可视化系统,超轻量级中文 OCR……GitHub 一周热点速览...
- (一)关于NLP的概念和处理过程
- sql日期和时间函数
- linux oel7没有网络,OEL7.2下Oracle11.2.0.4RAC部署
- 读书笔记:技术的本质-技术是什么,它是如何进化的 (布莱恩•阿瑟)
- 《Unix Linux 大学教程》 - 附录F
- 如何把html文件格式转为视频格式,如何将qlv格式转换成mp4-太平洋软件资讯-太平洋电脑网...
- 如何理解论文中常见的Top-1错误率和Top-5错误率?
- android手机如何加速,小技巧:如何给Android手机上的Chrome浏览器加速
- 4.计算机网络与信息安全
- py2neo直接调用cypher操作程序【不用每次都要输入cypher操作命令】
- JAVA毕业设计健康食谱系统服务器端计算机源码+lw文档+系统+调试部署+数据库
热门文章
- java序列化层数_java序列化详解
- jdbc mysql url写法_MySQL第04篇:JDBC
- 超过32位java_在java中存储和使用超过32位的数字!
- python源文件改写编写一个程序读取一个python源程序文件_学PYTHON第三节:编译和解释...
- isdigit函数python_Python判断字符串是否为数字的方法isdecimal 、isdigit、isnumeric及坑...
- ajax常见特效,用ajax实现正在载入的特效-Ajax编程
- html page背景图片,html – Fullpage.js背景图片
- php读取剪贴板内容,js如何处理剪贴板的内容?js处理剪贴板的内容的方法
- mysql 1064 oython_Python mysql错误#1064
- Linux中创建新用户并赋予指定目录的相关权限