HTTPS简介
创始人
2024-05-30 03:57:45
0

HTTPS是HTTP开启TLS传输协议,客户端要拿到服务端的公钥,用公钥加密数据后再进行传输,防止数据泄露后背篡改。它要解决两个问题:

  1. 怎么保证公钥可信

  1. 怎么加密数据

公钥可信问题

客户端从服务端获取公钥的时候,存在请求被拦截,攻击者把公钥替换成自己的公钥的风险。这样客户端再用公钥加密,攻击者就可以用自己的私钥解密,篡改内容后再用服务端公钥加密传给服务器。这时,客户端拿到公钥后就要验证公钥的可信度。

保证公钥可信

HTTPS通过数据认证中心(CA)签发的证书证明自己的公钥可信。证书里主要信息包括:认证机构公钥、机构的数字签名、有效期、持证人标识符、签名算法、序列号、版本等。客户端拿着认证机构的公钥和其他信息来验证数据前面的有效性,验证通过就代表客户端拿到的公钥是属于持证人的。

怎么保证认证机构的公钥是可信的?使用同样的验证方式,拿到认证机构公钥的数字证书去验证机构的公钥。最终会验证到根证书,根证书是预置在操作系统里,默认是可信的。

加密数据

HTTPS通过混合加密技术,既对称加密和非对称加密。

  • 非对称加密用作“秘钥协商”,用来传输对称加密的秘钥

  • 对称加密来加密明文

对称加密性能高,无法保证密钥传输安全;非对称加密传输安全,但无法加密性能差。

SpringBoot配置HTTPS

获取证书

用java自带的keytool自生成证书

keytool -genkey -alias tomcat -dname "CN=localhost,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365

将证书放到resources/certs/文件夹下,在application.yml添加证书配置信息,就可以以HTTPS访问服务

server:port: 443ssl:key-alias: "tomcat"key-store: "classpath:certs/keystore.p12"key-store-password: "123456"key-store-type: "PKCS12"

SpringBoot将HTTP重定向到HTTPS

方式一,基于tomcat的重定向

在tomcat上添加了Connector监听http的端口,然后在”/*” 路径下添加SecurityConstraint=CONFIDENTIAL,要求所有请求都走SSL协议。

@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory() {TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory() {@Overrideprotected void postProcessContext(Context context) {SecurityConstraint securityConstraint = new SecurityConstraint();// CONFIDENTIAL要求使用SSL协议securityConstraint.setUserConstraint("CONFIDENTIAL");SecurityCollection securityCollection = new SecurityCollection();securityCollection.addPattern("/*");securityConstraint.addCollection(securityCollection);context.addConstraint(securityConstraint);}};tomcatServletWebServerFactory.addAdditionalTomcatConnectors(connector());return tomcatServletWebServerFactory;
}private Connector connector() {Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);connector.setPort(8080);// 默认值就是443,可以不填connector.setRedirectPort(443);return connector;
}

方式二,基于SpringSecurity的请求路由

不同tomcat的SecurityConstraint实现重定向,但是Connector还是要添加。

在httpSecurity中通过portMapper()配置端口映射,再配置requiresChannel()要求所有请求都走安全的协议。

@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory() {TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();tomcatServletWebServerFactory.addAdditionalTomcatConnectors(connector());return tomcatServletWebServerFactory;
}private Connector connector() {Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);connector.setPort(8080);// 默认值就是443,可以不填connector.setRedirectPort(443);return connector;
}@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {httpSecurity.portMapper(it -> it.http(8080).mapsTo(443)).requiresChannel(channel -> channel.anyRequest().requiresSecure()).formLogin();return httpSecurity.build();
}

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...