SpringBoot开发案例之集成SSL证书

news/2025/1/25 18:37:09

推荐阅读:阿里云盾证书服务助力博客装逼成功

ssl2

SSL简介

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的。

ssl1

HTTPS简介

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。

3106433219_1_

接下来,我们开始在spring boot中使用ssl设置。

生成证书

使用SSL之前需要先生成一个证书,这个证书可以是自签名的(浏览器并不信任),也可以从SSL证书授权中心获取。下面为了演示方便,使用自授权证书。

每一个jdk或者jre中都有一个工具叫keytool,它是一个证书管理工具,可以用来生成自签名的证书。打开cmd,敲入命令:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

如图所示操作:

2039510971

输入y执行成功以后会在目录下生成一个PKCS12格式的命名为keystore.p12的证书。

配置HTTPS

在application.yml加入以下配置:

server:context-path: /springbootport: 8080session-timeout: 60tomcat:max-threads: 300uri-encoding: UTF-8ssl:key-store: classpath:keystore.p12key-store-password: 123456keyStoreType: PKCS12

最后,重启服务访问:https://localhost:8080/springboot

以下是360浏览器显示情况,由于是自签名,是不被浏览器信任的,但是可以看到颁发信息就是我们刚才录入的。

2.png

当然,tomcat做为一个后端服务,一般都是通过Nginx代理的方式去访问的,不会直接暴露给用户。

正常生产环境也很少这么去做,大家也就玩玩图个乐就ok了。

推荐阅读:阿里云盾证书服务助力博客装逼成功

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。


https://dhexx.cn/news/show-1546599.html

相关文章

新功能:日志服务IPython/Jupyter Notebook扩展发布

背景 IPython/Jupyter很流行 Jupyter的前身是IPython Notebook,而IPython Notebook的前身是IPython。如下可以看到起发展轨迹: IPython/Jupyter非常流行,从三个方面可以看到: 数据科学领域Python愈来愈流行已经是既定事实&#xf…

持续集成--测试三角形与分段构建策略原则

《infoq》 随着软件产品新特性的不断增加,软件自动化测试用例的数量也会成倍增长。对于一些历史“悠久”的遗留系统来说,甚至会积累数以万计的自动化测试用例。如果对这样的系统进行持续集成,还要求每个开发人员都要进行本地验证的话&#x…

css 选择其父元素下的某个元素

一,选择器 :first-child     p:first-child(first第一个 child子元素)(找第一个子元素为p) :last-child      p:last-child(last倒数 child子元素)(找倒数第一个子元素为p) :first-of-type    p:first-of-type(first第一个 type类型)(找第一个p) :last-of-type…

持续集成--“分支策略”

《infoq》 现代版本控制系统(SCM)的作用已不仅仅是保存历史版本,它还是各软件开发组织利用其分支功能实现多人并行开发,提高生产效率的一种工具。对于稍有历史的软件产品来说,一般都会有代码分支的出现,也…

自搭gitlab报错--git operation was rejected by pre-receive hook

自己编译gitlab源码搭建中文版gitlab完成后突然无法提交,gitlab服务使用正常,可是新建库文件,gitclone的时候报错。用gitlab本身也报错。 报错git operation was rejected by pre-receive hook 无意间找到一个检测gitlab的是否完整的命令 sud…

Python全栈工程师学习笔记|Django框架介绍与安装!

(1). Web开发介绍 目前Web开发属于Browser/Server模式,简称BS架构,开发语言有(Python、PHP、Java ...)。基于Python的Web工作原理如下:(2). 框架介绍 ①. 什么是框架? 软件框架就是为实现或完成某种软件开发时,提供了…

持续集成--“软件自我识别”

《infoq》 在前文《自动化部署》中,我们讨论了自动化部署。通过对部署操作脚本化、部署验证自动化、部署环境版本控制、生产部署全自动化等诸多实践,可以让部署完全处于受控状态。然而,作为运维人员,是否曾经有人走过来问你这样的…

mysql数据库基础命令(一)

mysql数据库基础命令(一)转载于:https://blog.51cto.com/mingongge/1957695

持续集成--“Everything is code”

《infoq》 在前文《软件自我识别》中,我们讨论了如果使软件做到自我识别,以促进自动化部署和版本检测等工作。 随着互联网的飞速发展,以及基础设施的改进,越来越多的业务被放在了“云”端。管理数千台服务器和各种应用程序的不同…

注释(译)

源自Javaの道日语技术社区原文地址译者梦梦的幻想乡見てくれてありがとうござい!!!コメント 注释 在Java程序里使用注释。 目录 /*注释*/ //注释 /**注释*/ /*注释*/ /*和*/之间的叫做注释。可以编写跨行注释。例 /* 可以编写跨行注释。可…