传输层安全性协议(英语:transport layer security,缩写作 tls),及其前身安全套接层(secure sockets layer,缩写作 ssl)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。
ssl包含记录层(record layer)和传输层,记录层协议确定传输层数据的封装格式。
传输层安全协议使用x.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(session key)。
这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。
第一步:生成证书在配置 tls/ssl 之前需要先拿到相应的签名证书,配置了java开发环境,可以使用 java 下面的 keytool 来生成证书,打开控制台输入:
keytool -genkey -alias michaelspica -storetype pkcs12 -keyalg rsa -keysize 2048 -keystore e:\temp\michaelspica.p12 -validity 3650
-alias 别名(可随便取)
-storetype 指定密钥仓库类型
-keyalg 生证书的算法名称,rsa是一种非对称加密算法
-keysize 证书大小
-keystore 生成的证书文件的存储路径(相对路径或绝对路径)
-validity 证书的有效期
如图:
注:正式环境中请填写标准值
第二步:获取证书根据路径找到生成好的证书,把证书复制到项目里,如图:
第三步:增加ssl配置在 application.yml 中添加如下配置,如图:
第四步:配置https访问添加spring boot启动时,读取配置信息,如
(注:请添加必要的jar)
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid></dependency><dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-thymeleaf</artifactid></dependency>
package com.michael.protocol.config;import org.apache.catalina.connector.connector;import org.springframework.beans.factory.annotation.value;import org.springframework.boot.web.embedded.tomcat.tomcatservletwebserverfactory;import org.springframework.boot.web.servlet.server.servletwebserverfactory;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;/** * created by michael on 2019/2/23. */@configurationpublic class tomcatconfig { @value("${server.http.port}") private int httpport; @bean public servletwebserverfactory servletcontainer() { tomcatservletwebserverfactory tomcat = new tomcatservletwebserverfactory(); tomcat.addadditionaltomcatconnectors(createstandardconnector()); // 添加http return tomcat; } private connector createstandardconnector() { connector connector = new connector("org.apache.coyote.http11.http11nioprotocol"); connector.setport(httpport); return connector; }}
注:这是 spring boot 2.0.x 版本的
至此,所有工作已经完成,启动项目,如:
可以看到两个端口,说明已经成功,即可通过以下两种方式进行访问:
https://localhost:443
http://localhost:80
以上就是springboot中怎么实现配置ssl的同时支持http和https访问的详细内容。
