在HTTPS SSL问题描述小程序中,网络请求,如果需要,https
spring boot部署ssl证书知识点远古
不加密
古代时代
发生了中间人攻击,出现了加密。 双方用同一密钥加密,并使用对称加密算法
密钥确定不能通过网络。 如果不使用需要线下商定,可能会被拦截。
密钥有可能被暴力破解,密钥长度会变长
数据加密标准(des ) 56位
三线制des 168
AES 256
现代不对称加密
最有名的算法: RSA算法
公共密钥:用于加密
私有密钥:用于解密
具体过程
a有公共密钥、私有密钥
b有公共密钥,私有密钥
隐私保留在本地,公共密钥发送给对方
a向b发送数据
1、使用私有密钥加密数据的哈希值
2、a用b的公共密钥加密数据。
3、a将加密哈希值和加密数据添加一些其它信息,并传送给b
4、b接收后,用private key解密数据,执行得到混列值
5、用a的公共密钥解密哈希值
6、比较混列值,验证数据完整性
非堆成加密仍然存在隐患
中介拦截双方的公共密钥,交换为自己的公共密钥,在中间解密、加密
为了防止公共密钥被拦截,请访问线下传送public key
CA (Certificate Authority)
不用线下见面传送public key
流程:
1、b把自己的公共密钥(和一些其他信息)交给CA
2、CA将这些信息用自己的private密钥加密,并使用数字证书
3、目前b发送给a的public key 变为:B发送给a的数字证书
4、a收到后,使用CA发布的CA证书(包含CA的public key),解密b的数字证书,得到b的公共密钥
CA的安全性
如果CA证书被劫持,换成攻击者自己伪造的CA证书,也有可能被劫持
然而,CA证书嵌入在浏览器和操作系统中,不是通过网络获取的。
中介可以拦截a和b数字证书,也可以使用CA证书获取a和b公共密钥,但中介不能伪造可以通过CA认证的数字证书
实际使用1、不对称加密复杂,处理速度慢,对所有消息使用不对称加密效率不高
2、因此,非对称加密只是用于传递一条消息,是用于对称加密的密钥
3、对称加密密钥确定后,a、b仍可通过对称加密进行网络通信。
因此,在现代,在a和b之间进行安全放心的网络通信,需要经过以下几个步骤
用CA体系交换public key通过非对称加密算法,交换用于对称加密的密钥通过对称加密算法,加密普通网络通信基本上是SSL/TLS的工作过程。
系统密钥对称密钥
非对称密钥
密钥库1,密钥库
2、包括密钥和数字证书
3、密钥库中有密码
ssl properties.yaml
server :端口: 8443 #指定端口SSL : key-store : class path : tql.zone.jks #指定密钥库key-store-password 3360 wuxiaord
package com.example.smart text.config; importorg.Apache.catalina.context; importorg.Apache.catalina.connector.connector; importorg.Apache.Tomcat.util.descriptor.web.security collection; importorg.Apache.Tomcat.util.descriptor.web.security constraint; importorg.spring framework.boot.web.embedded.Tomcat.tomcatservletwebserverfactory; importorg.spring帧work.context.annotation.bean; importorg.spring framework.context.annotation.configuration; @ configurationpublicclasshttpsconfig {/* * * spring boot 2.0 * @ return */@ beanpublictomcatservletwebserverfactoryservletclet { tomcatservletwebserverfactorytomcat=newtomcatservletwebserverfactory { @ overrideprotectedvoidpostprocesscontext (连续文本(overrideprotectedvoidpostprontext constraint.setuser constraint () securitycollectioncollection=newsecuritycollection (; Collection.addpattern('/* '; constraint.addcollection; context.add constraint (constraint ); }; Tomcat.addadditionaltomcatconnectors (http连接器) ); 返回主题; } @ beanpublicconnectorhttpconnector () connector connector=new connector ) ' org.Apache.coyote.http 11.http 11 nioprotp 11 //Connector监听的http端口号connector.setport(8080; 连接器. set secure (false; 拦截http端口号后转发的https端口号connector.setredirectport(8443 ); 返回连接器; }