摘要:这里我们将详细介绍SpringBoot如何配置SSL,将你的http升级为https

Http和Https的基本概念

Http:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

Https:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

Https协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

Https和Http的区别主要如下:

1、Https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、Http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、Http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、Http的连接很简单,是无状态的;Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

这里以腾讯云为例

1.首先我们来到你的域名这你要设置好你的服务器ip

SSL01

2.接下来到 SSL证书,确定你的证书是已颁发。

SSL02

3.点击下载证书,然后解压,我使用的是tomcat所以打开tomcat文件夹

SSL03

4.这里有一个jks的文件

SSL04

5.把jks文件复制到你的工程resources文件下

SSL05

6.这里的证书别名在腾讯云上就是这个通用名称

SSL06

7.打开你的SpringBoot工程中,打开application.properties文件添加以下内容

1
2
3
4
5
6
7
8
9
10
#https加密端口号 443
server.port=443
#SSL证书路径 一定要加上classpath:
server.ssl.key-store= classpath:www.XXXX.cn.jks
#SSL证书密码
server.ssl.key-store-password=XXX
#证书类型
server.ssl.key-store-type=JKS
#证书别名
server.ssl.key-alias=www.XXX.cn

8.再打开你的XXXApplication文件添加以下代码,什么都不用改动,直接粘贴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.XXX.XXX;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
public class WorkApplication{

public static void main(String[] args) {
SpringApplication.run(WorkApplication.class, args);
}

/**
* http重定向到https
* @return
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}

@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(8080);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
}

9.这里你的工程应该打包成jar包,最后你布置到你的云服务器上就可以了,访问后

SSL07