为什么要把网站转为https?

https是网络数据传输协议,也就是说www的网站在传输数据的时候,都必须遵守这个协议,遵守统一的标准的协议,有利于数据更好的传送,而https则可以理解为是http的升级版或者安全版本。

https的优点如下:

1、部署https的网站更安全

http是明文传送数据,不安全。也就是说,在传送数据的时候是明文的,没有经过加密,如果黑客一旦截获了这种明文数据,用户的隐私就很有可能暴露,如:账号、密码等。而https在传送数据的时候会对数据进行加密,就算黑客截获了数据也是加密后的数据。如果黑客通过技术进行破解,会花费更多的时间和技术成本。因此,https加密数据可以大大降低用户隐私泄露的风险,增加数据传输的安全性。

2、https可以降低网站被劫持、被镜像的风险。

http网站是无状态的,在传送数据的时候也没有对数据进行任何形式的加密,更不会对客户端和服务器进行反复的验证。这样在传送数据的时候,很可能被黑客利用,通过域名劫持等技术手段返回虚假的网站或数据给客户端。造成用户隐私泄露或财产损失。

而https采用了SSL安全机制进行通信,以数字证书为基础,在数据传送的过程会对客户端和浏览器进行反复的验证,确保通过域名可以访问到你想要访问的那台服务器,从而大大减少网站被劫持、被镜像的风险。

https原理如下

  • 客户端访问服务器->
  • 服务器把数字证书+公用密匙发给客户端->
  • 客户端验证服务器,确保访问的是正确的服务器(不是钓鱼网站)->
  • 客户端生产会话密匙并用公用密匙进行加密再次发给服务器->
  • 服务器用私人密匙进行解密(也就相当于验证客户端),验证成功建立起一条安全的数据传递通道->
  • 服务器把客户端请求的数据打包加密发送给客户端->
  • 客户端浏览器接收数据并解析。
  • 如果客户端再次请求数据,则重复上述步骤。

这种重复验证的方式,确保通过域名可以访问到正确的服务器,从而大大降低网站被劫持、被镜像的风险。

3、部署https可以提高用户体验。

https部署成功的网站,在浏览器的访问地址栏会显示一个带有安全标识的一个绿色的小锁,这样可以提高用户对这个网站的信任度及用户体验。

image-20220128211819067

申请SSL证书

不建议自己使用jdk生成证书,后期连接的时候会报错"您的连接不是私密连接",需要通过相关机构颁发,可以直接在服务器商申请免费的证书。

腾讯云申请地址

下载SSL证书

SpringBoot使用的是内置tomcat,所以选择tomcat文件。

image-20220128205436939

下载完成解压

image-20220128205520833

在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,后期如果有需要再来加。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐