SpringBoot-系列一:使用https

1.什么是https?

HTTPS中文名称:超文本传输安全协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

https=http+ssl

2.为什么需要使用https?

最初大家都使用http协议,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

3.怎样使用https?

3.1.生成证书

keytool-genkey-aliastomcat-keyalgRSA-keystore/home/gzr/tomcat.keystore

将生成好的证书放在项目根目录即可

3.2.配置文件增加配置属性

server:

#端口号

port:443

ssl:

#生成证书的名字

key-store:https.keystore

#密钥库密码

key-store-password:123456

key-store-type:JKS

key-alias:https

此时访问https://localhost即可(https默认端口号是443,所以无需加上端口号)

3.3.让http访问自动跳转到https

上面只有https协议,如果用http访问会报错

可是用户日常使用中,并不愿意加上https

下面增加http访问自动跳转到https:

首先增加一个自定义属性,用于http端口号

http:

port:80

编写配置类HttpsConfig

packagecom.chenyuwen.demo;

importorg.apache.catalina.connector.Connector;

importorg.springframework.beans.factory.annotation.Value;

importorg.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

importorg.springframework.boot.web.servlet.server.ServletWebServerFactory;

importorg.springframework.context.annotation.Bean;

importorg.springframework.context.annotation.Configuration;

@Configuration

publicclassHttpsConfig{

@Value("$")

privateinthttpsPort;

@Value("$")

privateinthttpPort;

@Bean

publicServletWebServerFactoryservletContainer() {

Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol");

connector.setScheme("http");

connector.setSecure(false);

connector.setPort(httpPort);

connector.setRedirectPort(httpsPort);

TomcatServletWebServerFactorytomcat=newTomcatServletWebServerFactory();

tomcat.addAdditionalTomcatConnectors(connector);

returntomcat;

}

}

此时再访问http://localhost会自动跳转到https://localhost

本次讲解到此结束!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181212G1LN3W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券