公钥私钥和HTTPS分析
Posted dyunfeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了公钥私钥和HTTPS分析相关的知识,希望对你有一定的参考价值。
从不同的层面去保护数据的安全。
两者有几个类似的概念:加密,解密等,但是实现方式不同:
1、基于springboot的HTTPS具体实现(使用HTTPS在网络上跑的数据包就会加密,可以通过抓包工具查看和HTTP的不同)
HTTPS是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
配置:(1)使用jdk创建证书:先打开cmd,然后输入keytool -genkey -alias server -keyalg RSA -keystore ./server.keystore
(2)将上一步生成的keystone文件复制到项目的resources目录,在application.properties添加如下配置
server.port=8080
server.ssl.key-store=server.keystore
server.ssl.key-alias=server
server.ssl.enabled=true
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS
(3)http访问自动转https访问
@Configuration public class TomcatConfig { @Bean TomcatServletWebServerFactory tomcatServletWebServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){ @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); } }; factory.addAdditionalTomcatConnectors(createTomcatConnector()); return factory; } private Connector createTomcatConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8081); connector.setSecure(false); connector.setRedirectPort(8080); return connector; } }
2、传输数据加密加签:公钥与私钥原理(百度一堆)
1)鲍勃有两把钥匙,一把是公钥,另一把是私钥
2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。
4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。
非对称加解密本身慢,所以只加密文档的哈希而不是整个文档。如果你想检测签名是否有效,可以解密签名并自己对文档进行哈希转换(生成摘要),看看这两个值(摘要)是否匹配,这样我们就知道所接收的文档与服务器发送是否完全一样。如果文档在传输中被更改了,则哈希与服务器作为签名提供的值(摘要)不匹配,这叫做无效签名。
6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
7)鲍勃将这个签名,附在信件下面,一起发给苏珊。
8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。
9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。
以上是关于公钥私钥和HTTPS分析的主要内容,如果未能解决你的问题,请参考以下文章