本帖最后由 张荫 于 2018-1-2 09:11 编辑
关于springboot 使用ssl
我们平时开发的项目都是基于http协议的,那么我们还知道有一种https的协议,那么他们有什么区别呢?我们下面一起来分析下。
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
首先我们来看下什么是ssl:
SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层对网络连接进行加密。
SSL协议提供的服务主要有: 1、认证用户和服务器,确保数据发送到正确的客户机和服务器; 2、加密数据以防止数据中途被窃取; 3、维护数据的完整性,确保数据在传输过程中不被改变。
那么简单来说ssl 就是我们经常见到的以https开头的网站,而没有加密的就是http协议的网站了。也就是说使用https可以让我们开发的应用更加的安全可靠。
那么我们如何获取ssl的证书呢?
目前阿里,腾讯等互联网企业都有自己的云平台,我选择了腾讯云去注册自己的证书(注册证书前需要拥有自己的云服务器和域名)。腾讯云可以注册一个免费1年的ssl证书。
申请证书图
申请证书并且认证之后就可以下载了。
各种类型的证书
那么我们如何把我们的spring boot项目由http协议改成https呢?
我们知道,平时我们访问的是http协议,那么我们现在要访问https如何做呢?以及如何让我们访问http时跳转到https呢?我们一起往下看:
首先将.jks的证书导入到我们的项目中
并在properties文件中配置相应的端口以及密码
在Application中添加:
[Java] 纯文本查看 复制代码 @Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
|