[转载]JavaEE学习篇之——网络传输数据中的密码学知识以及Tomcat中配置数字证书EE

简介: 原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557   今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些密码学的相关知识,这就是连锁反应吗?好吧不多说了,先来看一下密码学中关于网络中数据传输的知识。

原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/21716557

 

今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些密码学的相关知识,这就是连锁反应吗?好吧不多说了,先来看一下密码学中关于网络中数据传输的知识。

 

首先来了解一下网络上传输数据的加密方式:

第一种是对称加密:就是加密数据的密码和解密数据的密码是相同的。这种方式的优点就是简单,最大的缺点就是不安全,因为加密的密码和解密的密码是相同的,那么加密的人就必须将密码告诉解密的人,在这个过程中就存在不安全了,怎么告诉都不安全,打电话怕人偷听,写信怕被人拦截。。。而且只要拿到密码就可以进行解密数据,这种方式也是不安全的。

 

第二种是非对称加密:就是加密数据的密码和解密数据的密码是不相同的,原理就是产生一对公钥和私钥,公钥加密的数据只能私钥解,私钥加密的数据只能公钥解,所以当拿到公钥加密的数据,只能用私钥解,公钥是解不开的。

 

下面我就来通过一个例子来说明一下这个过程:

角色:接收者,发送者,拦截者

名词:CA机构,数字证书,数字签名

 

下面的就通过这张图来解释一下(这张图花了我一个上午的时间,眼睛都看花了,一定要保证我的版权呀!):

 

 

下面就来模拟集中情况来说明一下:

 

第一种情况:接收者会生成一对公钥和私钥,并且将自己的公钥发送给发送者,然后发送者用这个公钥将需要发送的数据进行加密,然后再将加密之后数据发送给接收者,这时候接收者只需要用私钥进行解密就可以得到发送者的数据了,在传输的过程中即使有拦截者拿到了发送者发送的数据以及接收者的公钥,他仍然不能得到原始内容的,因为只能用私钥进行解密,而私钥只有接收者有。如图中的流程:

1  ->  2  ->  3  ->  4  ->  5

 

第二种情况:对于第一种情况,想想就是天衣无缝了吗?肯定不可能的了,现在有这种情况,有一个hacker,他拦截到接收者发送给发送者的公钥,然后自己生成一对公钥和私钥,然后他把自己的公钥发送给发送者,当发送者拿到这个公钥的时候(实际上他以为这还是接收者发送给他的公钥),用这个公钥进行加密,然后发送给接收者,这时候hacker再次进行拦截,然后hacker拦截到数据后,就用自己的私钥进行解密,就得到了原始数据,而接收者得到内容之后解密是失败的,因为发送者发送的数据是用hacker的公钥进行加密的。如图中的流程:

1  ->  2(6  ->  7)  ->  3  ->  4(8  ->  9  ->  10)  ->  5

 

第三种情况:对于第二种情况的话,难道我们也就没有办法了吗?难道我们的信息只能无辜的被hacker进行读取吗?当然,道高一尺,魔高一丈,其实解决上面的问题的根本方法就是要让发送者相信他接收到的公钥是接收者发送的,而不是hacker发送的公钥。这个解决办法就是有一个中间的担保人,担保这个公钥是接收者的,同时接收者需要事前找到这个担保人说明一下。这时候就出现了一个机构:CA。这里的CA就是上面说到的担保人,这个机构一般是由政府机构管理的。接收者产生一对公钥和私钥,然后拿着公钥到CA机构认证说明一下,同时CA会颁发一份数字证书给接收者,其实这数字证书就是有CA认证之后的公钥。然后接收者就会将这份数字证书发送给发送者,当发送者拿到这份数字证书的时候,会先到CA机构去认证一下,确定公钥是不是接收者发送的。然后在用数字证书进行数据加密,发送给接收者。如图中的流程:

1  ->  11  ->  12  ->  13  ->  14  ->  5

 

第四种情况:对于第三种情况,难道hacker就没办法了吗?说到这里可能有人会说,hacker可以生成一对公钥和私钥,然后到CA机构认证拿到数字证书,然后再拦截。这里就要说说这个CA机构了,这个机构是由政府管理的,不是什么人什么机构想认证就能认证的,一般是银行,商业性的机构才有权认证,同时认证的时候也不是随随便便的,需要提供很多的信息的。这样一说你认为hacker有权利申请了吗?他敢申请吗?,所以这种方法就不行了。同时也说明了一点就是数字证书这东东可以防止hakcer拦截信息进而解密信息。但是hacker不解密信息,但是他仍然可以干坏事,他可以篡改信息。如下情景:hacker拦截了接收者发送给发送者的数字证书,然后在拦截发送者使用数字证书加密的数据,这时候不是为了解密,也解不了密,而是将这些信息保存或者丢弃,然后使用截取到的数字证书加密一段自己想发送给接收者的数据,然后发送给接收者,这时候,接收者收到的加密数据其实是hacker的,而不是发送者发送的,如图中的流程:

1  ->  11  ->  12(15)  ->  13  ->  14(16)  ->  5

 

第五种情况:对于第四种情况,难道我们有没有办法了吗?我们的信息就任hacker进行篡改,这肯定是不可能的,上有政策,下有对策。那我们该怎么办呢?解决的思路就是接收者要验证数据在传输的过程中没有被篡改过。那么这里又要说到一种技术:数字签名操作步骤:首先发送者也会生成一对公钥和私钥,同时向CA机构得到一份数字证书,同时这时候发送者将要发送的数据使用私钥进行加密A,同时使用私钥对数据的数据指纹(MD5)进行加密(数字签名)B,然后将A和B以及发送者的数字证书一起发送给接收者,接收者拿到数据之后:

第一步:然后向CA机构验证数字证书是不是发送者的,是的话,就用数字证书解密数据指纹(MD5)数据
第二步:使用数字证书解密发送者的数据
第三步:将第二步中得到的数据获取一下指纹,和第一步中获取到的数据指纹相比较,如果相等就表示发送内容没有被篡改,否则就被篡改了。

这样就可以防止信息发送的过程中防止被篡改了。

 

以上是介绍完了网络中传输数据中设计到的密码学的知识,下面就来介绍一下使用Tomcat来进行数字证书的配置:

首先我们使用java自带的一个命令生成一个密钥库keystore文件:

keytool -genkeypair -alias "tomcat" -keyalg "RSA"

这里需要给密钥库配置密码,然后是姓氏,这里面的这个姓氏就是给哪个网站配置数字证书,我们这里是localhost,这个信息一定要填写正确,不然没有效果的,其他的信息我们这里只做演示,所以可以不填的,按回车,最后输入y,这时候就会在你的本机用户目录中生成一个.keystore文件。这个就是密钥库文件了。

 

密钥库文件生成好了,接下来我们就来配置Tomcat文件了,找到server.xml文件,打开:

这时候我们将刚刚生成的.keystore放到conf文件夹下面,配置server.xml文件内容如上图所示,密码就是刚刚生成.keystore文件时敲入的密码。保存server.xml文件,然后重启tomcat

 

使用IE浏览器(Chrome看不到效果的),在地址栏中输入:

https://localhost:8443

这里一定要使用https协议了,因为是加密访问的,还有这里要使用8443端口了,因为我们要访问我们的数字证书的连接器,在浏览器中看到:

 

 

这时候IE浏览器会提示我们这个数字证书不是由CA机构颁发的,不可信(因为IE浏览器中集成了这种数字证书的检查机制),我们点击继续浏览此网站:

 

 

这时候就可以连接到了数字证书连接器,同时可以看到地址栏的右边多了一个图标:说是证书错误,我们点击这个图标,他再次弹出一个提示,说这个证书不可靠,我们不管他了,点击查看证书:

 

 

这时候他还是提示我们这个证书不安全,看到颁发者是localhost了,这时候我们点击安装证书,安装完成之后,到此为止我们就为我们自己的localhost网站安装了我们自己的localhost的数字证书了。这样用户在访问localhost网站的时候,用户提交的数据就会使用我们安装好的数字证书进行加密了。

 

总结:上面就大体上说了一下网络中传输数据中的相关加密的知识以及怎么使用tomcat配置一个数字证书。其实这些内容我们日常生活中都是会接触到的,最明显的例子就是网银了。你在访问银行网站的时候,他会提示你安装一下数字证书,这个就说明:该银行生成了一对公钥和私钥,然后到CA机构去认证一下得到了一份数字证书,然后在将这份数字证书配置到该网站上面即可。

作者: Candyメ奶糖

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博文来源广泛,如原作者认为我侵犯知识产权,请尽快给我发邮件 359031282@qq.com联系,我将以第一时间删除相关内容。

目录
相关文章
|
2月前
|
弹性计算 监控 开发工具
【阿里云弹性计算】阿里云ECS的网络优化实践:VPC配置与网络性能提升
【5月更文挑战第29天】阿里云ECS通过虚拟私有云(VPC)提供高性能、安全的网络环境。VPC允许用户自定义IP地址、路由规则和安全组。配置包括:创建VPC和交换机,设定安全组,然后创建ECS实例并绑定。优化网络性能涉及规划网络拓扑、优化路由、启用网络加速功能(如ENI和EIP)及监控网络性能。示例代码展示了使用Python SDK创建VPC和交换机的过程。
289 3
|
2月前
|
SQL Oracle Java
实时计算 Flink版产品使用合集之网络包大小与配置不符该如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6天前
|
运维 网络协议 网络安全
2023网络建设与运维正式赛卷-交换配置
【7月更文挑战第3天】某集团构建了两地三中心网络架构,包括两个数据中心和异地灾备中心,使用OSPF、RIP、ISIS、BGP协议互联。核心设备包括SW1、SW2(数据中心)、SW3(灾备及办事处),以及FW1(总司防火墙)、FW2(办事处防火墙)等。网络拓扑涉及多个VLAN和IP地址段,SW3配置了VRF隔离办事处和Internet流量。SW1配置SNMPv3用于监控,并设置流量镜像。链路故障检测和LLDP启用以确保网络健康。
|
10天前
|
算法 安全 网络安全
网络安全&密码学—python中的各种加密算法
数据加密是一种保护数据安全的技术,通过将数据(明文)转换为不易被未经授权的人理解的形式(密文),以防止数据泄露、篡改或滥用。加密后的数据(密文)可以通过解密过程恢复成原始数据(明文)。数据加密的核心是密码学,它是研究密码系统或通信安全的一门学科,包括密码编码学和密码分析学。
|
14天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
30 1
|
16天前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之怎么把将客户端所在的网络和实例配置到同一环境去
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
18天前
|
运维 网络安全 网络虚拟化
2024网络建设与运维赛题-交换配置教程
SW1, SW2, SW3作为核心交换机,配置了多个VLAN以隔离不同部门的网络,如产品、营销、财务和行政。配置中还包括启用VLAN访问控制,允许特定VLAN通过二层链路,并设置了链路聚合(LACP)以增强SW1和SW2之间的连接可靠性。此外,所有交换机都配置了IP VRF来支持分公司(Branch,RD 1:1)和Internet(RD 2:2)的虚拟专用网络。
2024网络建设与运维赛题-交换配置教程
|
7天前
|
运维 网络协议 网络安全
2023网络建设与运维正式赛卷-交换配置-上
【7月更文挑战第2天】该集团进行数字化转型,构建了两地三中心网络架构,包括两个数据中心和一个异地灾备中心。网络使用OSPF、RIP、ISIS、BGP协议互联,并设有多台交换机、路由器、防火墙和无线控制器。例如,SW1和SW2为核心交换机,SW3为灾备DC的核心交换机,FW1为总公司防火墙,FW2为办事处防火墙,RT1和RT2为路由器,AC1为有线无线控制器。配置中涉及VLAN隔离、端口访问控制、LACP聚合、负载均衡和IPSec VPN,以确保网络稳定性、安全性和可扩展性。已完成的配置需通过客户端测试验证功能正常。
|
7天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)