披上了SSL战甲的HTTP战士——HTTPS

这篇文章我来梳理一下HTTPS的前世今生

目录

1.对称加密算法

2.非对称加密算法(RSA)

3.非对称加密+对称加密

4.中间人攻击劫持

5.CA证书


HTTP我们都知道它存在很多问题,例如:

1).通信使用明文,内容可以被监听

2).不验证通信方的身份,可能遭遇伪装

3).无法证明报文的完整性,所以有可能已遭篡改


互联网上的任何角落都存在通信内容被监听的风险,所以前辈们就想到了为我们的信息制定,加密、认证、完整性保护的措施。通过这些措施,为我们的通信制造出一个安全的通道。


开头说过HTTP是“披上了SSL战甲的HTTP战士”,那么SSL是什么呢?

SSL(Secure Socket Layer)是由浏览器开发商景通信公司率先倡导的,是为网络通信提供安全及数据完整性的一种安全协议。SSL1.0设计之初就发现了问题,并没有投入使用。SSL2.0也发现存在问题,所以很多浏览器直接废除了这个版本。所以目前主流版本是SSL3.0。


下面来聊一下HTTP的升阶之路吧:

1.对称加密算法

定义:加密和解密用的是同一把密钥

如果通信使用明文,就相当于一丝不挂的逛街,所以前辈想到了,为我们的通信加密。决定通过密钥解开密文的方式解决这个问题。

 问题:加密和解密都需要用到密钥,密钥也需要通过网络传送,很容易被劫持,一旦被劫持,加密也就失去了意义。


2.非对称加密算法(RSA)

定义:一对钥匙,一个是保密的(私钥);一个是公开的(公钥)。只有对应的私钥和公钥可以互相解密。

上面的对称加密算法,很容易被劫持,所以不安全。那么使用非对称加密算法的时候,小红把自己的公钥发给小名,小名把要发给小红的消息通过小红的公钥加密,发送给小红。小红收到小名的消息后,拿自己密钥解锁就可以了。

问题:非对称算法的方式的公钥加密方式比对称加密的方式复杂百倍,所以在通信的时候使用这种方式,效率会很低。


3.非对称加密+对称加密

方法

1).小红生成一个对称加密算法的密钥,通过非对称加密的算法(小红用公钥加密对称算法的密钥)发送给小名。

2).小名接收到对称加密算法的密钥后,小名、小红之间就直接通过对称加密算法通信了。

问题:存在中间人劫持的问题,无法确保此时小名收到的是小红的公钥。


4.中间人攻击劫持

原理如下图

过程:

1).中间人截取小名和小红互发的公钥,并给两人发送自己的公钥,此时小名和小红误以为街道的是对方的公钥,但是此时他俩手持的是中间人的公钥;

2).小名使用 公钥(中间人) 加密要发送给小红的消息;

3).中间人接到小名发给小红的消息,用 私钥(中间人)解密读取信息,并用 公钥(小红) 加密,发送给小红;

4).小红用自己的 私钥(小红) 解密,读取信息。


5.CA证书

为了解决上面的问题,前辈们决定使用由数字证书认证机构(CA)颁发的数字证书。

1.数字证书:

数字证书的组成

1).小红的公钥以及小红的个人信息通过Hash算法得到消息摘要;

2).将消息摘要通过CA的私钥加密得到数字签名.

2.数字证书的验证:

验证方法:

1).通过相同的Hash算法,得到消息摘要,

2).通过CA的公钥对数字签名解密,得到CA的消息摘要,

3).两者对比,看是否被篡改

把上文中的小名换做客户端,小红换做服务器就是HTTPS的流程图了。


文章是通过阅读《码农翻身》、《图解HTTP》的一些个人学习总结,所以如果各位发现我的理解有误,希望大家能够留言帮我指正,谢谢大家啦😊

  • 38
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
在Spring Boot中,可以通过以下步骤来配置SSL同时支持HTTPHTTPS: 1. 生成SSL证书和密钥 可以使用Java Keytool工具生成SSL证书和密钥。以下是一个示例命令: ``` keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -validity 3650 ``` 其中,mydomain是证书别名,keystore.jks是密钥库文件名,-validity表示证书有效期为3650天。 2. 在application.properties文件中配置SSL 在application.properties文件中添加以下配置: ``` server.port=8443 server.ssl.key-store=classpath:keystore.jks server.ssl.key-store-password=changeit server.ssl.key-password=changeit server.ssl.key-alias=mydomain ``` 其中,server.port指定HTTPS端口号,server.ssl.key-store指定密钥库文件路径,server.ssl.key-store-password指定密钥库密码,server.ssl.key-password指定证书密码,server.ssl.key-alias指定证书别名。 3. 配置HTTP重定向到HTTPS 在配置文件中添加以下配置: ``` server.port=8080 server.ssl.enabled=true server.ssl.redirectHttp=true ``` 其中,server.port指定HTTP端口号,server.ssl.enabled=true启用SSL,server.ssl.redirectHttp=true配置HTTP重定向到HTTPS。 4. 运行应用程序 现在可以运行应用程序,并通过https://localhost:8443访问应用程序。如果尝试访问http://localhost:8080,应该会自动重定向到https://localhost:8443。 总结: 通过以上步骤,可以配置Spring Boot应用程序来同时支持HTTPHTTPS。可以使用SSL证书和密钥来提供安全性,同时使用HTTP重定向到HTTPS来提高用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进阶的小名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值