推荐阅读:阿里云盾证书服务助力博客装逼成功
SSL(Secure Sockets Layer 安全套接层), 及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。
SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层: SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
而基于 B/S 的 web 应用中,是通过 https 来实现 SSL 的。
HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。
接下来,我们开始在 spring boot 中使用 ssl 设置。
使用 SSL 之前需要先生成一个证书,这个证书可以是自签名的 (浏览器并不信任),也可以从 SSL 证书授权中心获取。下面为了演示方便,使用自授权证书。
每一个 jdk 或者 jre 中都有一个工具叫 keytool,它是一个证书管理工具,可以用来生成自签名的证书。打开 cmd,敲入命令:
- keytool - genkey - alias tomcat - storetype PKCS12 - keyalg RSA - keysize 2048 - keystore keystore.p12 - validity 3650
如图所示操作:
输入 y 执行成功以后会在目录下生成一个 PKCS12 格式的命名为 keystore.p12 的证书。
在 application.yml 加入以下配置:
- server:
- context-path: /springboot
- port: 8080
- session-timeout: 60
- tomcat:
- max-threads: 300
- uri-encoding: UTF-8
- ssl:
- key-store: classpath:keystore.p12
- key-store-password: 123456
- keyStoreType: PKCS12
最后,重启服务访问:https://localhost:8080/springboot
以下是 360 浏览器显示情况,由于是自签名,是不被浏览器信任的,但是可以看到颁发信息就是我们刚才录入的。
当然,tomcat 做为一个后端服务,一般都是通过 Nginx 代理的方式去访问的,不会直接暴露给用户。
正常生产环境也很少这么去做,大家也就玩玩图个乐就 ok 了。
推荐阅读:阿里云盾证书服务助力博客装逼成功
作者: 小柒
来源: https://yq.aliyun.com/articles/173636