公钥私钥和HTTPS分析
2021-02-15 21:22
标签:ext uri apache 中心 key bean store ESS ring 从不同的层面去保护数据的安全。 1、基于springboot的HTTPS具体实现(使用HTTPS在网络上跑的数据包就会加密,可以通过抓包工具查看和HTTP的不同) 2、传输数据加密加签:公钥与私钥原理(百度一堆) 1)鲍勃有两把钥匙,一把是公钥,另一把是私钥 非对称加解密本身慢,所以只加密文档的哈希而不是整个文档。如果你想检测签名是否有效,可以解密签名并自己对文档进行哈希转换(生成摘要),看看这两个值(摘要)是否匹配,这样我们就知道所接收的文档与服务器发送是否完全一样。如果文档在传输中被更改了,则哈希与服务器作为签名提供的值(摘要)不匹配,这叫做无效签名。 7)鲍勃将这个签名,附在信件下面,一起发给苏珊。 8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 公钥私钥和HTTPS分析 标签:ext uri apache 中心 key bean store ESS ring 原文地址:https://www.cnblogs.com/dyunfeng/p/11739700.html
两者有几个类似的概念:加密,解密等,但是实现方式不同:
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)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。
4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。
6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。
13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。
上一篇:egg.js之中间件
下一篇:我对asp.net管道模型的理解