标签:加密 SpringBoot 证书 网站 配置 https 服务器 客户端
为什么要把网站转为https?
https是网络数据传输协议,也就是说www的网站在传输数据的时候,都必须遵守这个协议,遵守统一的标准的协议,有利于数据更好的传送,而https则可以理解为是http的升级版或者安全版本。
https的优点如下:
1、部署https的网站更安全。
http是明文传送数据,不安全。也就是说,在传送数据的时候是明文的,没有经过加密,如果黑客一旦截获了这种明文数据,用户的隐私就很有可能暴露,如:账号、密码等。而https在传送数据的时候会对数据进行加密,就算黑客截获了数据也是加密后的数据。如果黑客通过技术进行破解,会花费更多的时间和技术成本。因此,https加密数据可以大大降低用户隐私泄露的风险,增加数据传输的安全性。
2、https可以降低网站被劫持、被镜像的风险。
http网站是无状态的,在传送数据的时候也没有对数据进行任何形式的加密,更不会对客户端和服务器进行反复的验证。这样在传送数据的时候,很可能被黑客利用,通过域名劫持等技术手段返回虚假的网站或数据给客户端。造成用户隐私泄露或财产损失。
而https采用了SSL安全机制进行通信,以数字证书为基础,在数据传送的过程会对客户端和浏览器进行反复的验证,确保通过域名可以访问到你想要访问的那台服务器,从而大大减少网站被劫持、被镜像的风险。
https原理如下:
- 客户端访问服务器->
- 服务器把数字证书+公用密匙发给客户端->
- 客户端验证服务器,确保访问的是正确的服务器(不是钓鱼网站)->
- 客户端生产会话密匙并用公用密匙进行加密再次发给服务器->
- 服务器用私人密匙进行解密(也就相当于验证客户端),验证成功建立起一条安全的数据传递通道->
- 服务器把客户端请求的数据打包加密发送给客户端->
- 客户端浏览器接收数据并解析。
- 如果客户端再次请求数据,则重复上述步骤。
这种重复验证的方式,确保通过域名可以访问到正确的服务器,从而大大降低网站被劫持、被镜像的风险。
3、部署https可以提高用户体验。
https部署成功的网站,在浏览器的访问地址栏会显示一个带有安全标识的一个绿色的小锁,这样可以提高用户对这个网站的信任度及用户体验。
申请SSL证书
不建议自己使用jdk生成证书,后期连接的时候会报错"您的连接不是私密连接",需要通过相关机构颁发,可以直接在服务器商申请免费的证书。
下载SSL证书
SpringBoot使用的是内置tomcat,所以选择tomcat文件。
下载完成解压
在resources目录下导入xxx.jks,并且在application.yml
文件中进行相关https的配置
个人习惯的配置文件时yml
server:
# 服务器运行端口
port: 9990
ssl:
key-store: classpath:*****
# SSL证书密码 (自己在腾讯云申请证书时的密码,如果当时没填那么在压缩文件就会有一个txt文件存放密码)
key-store-password: ****
# 证书类型
key-store-type: JKS
在Maven中添加打包配置,避免打包过程中通过编译,压缩等方式破坏了证书文件,确保打包时不会处理jks文件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<!-- 避免 https 证书文件被修改 -->
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
自己折腾的一个方法,在此记录一下,由于是自己使用当前的后端接口,所以没必要做http转https,后期如果有需要再来加。
标签:加密,SpringBoot,证书,网站,配置,https,服务器,客户端 来源: https://blog.csdn.net/qq_51218646/article/details/122736751
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。