简介
SSL(Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络进行加密。SSL协议可以分为两层:SSL记录协议,为高层协议提供数据封装、压缩、加密,建立在TCP基础上;SSL握手协议建立在SSL记录协议之上,用于在实际数据开始传输之前,通信双方进行身份认证、协商加密算法、交换加密秘钥。
操作流程
生成证书
jdk自带的工具中,keytool是一个证书管理工具,可以用来生成自签名的证书。
keytool -genkey -alias tomcat
keytool -genkey -alias tomcat -keyalg "RSA" -keystore "test.keystore"
keytool -list -keystore test.keystore
keytool -delete -alias tomcat
运行完成后会在当前==用户目录 官网:www.fhadmin.org ==下声称.keystore文件,将对应的文件copy到resources目录下。
spring boot配置
server.ssl.key-store = .keystore
server.ssl.key-store-password = 123456
server.ssl.keyStroreType = JKS
server.ssl.keyAlias
http以及https支持
@Bean 官网:www.fhadmin.org
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addAdditionalTomcatConnectors(createSslConnector());
return tomcat;
}
private Connector createSslConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
try {
File keystore = new ClassPathResource("keystore").getFile();
File truststore = new ClassPathResource("keystore").getFile();
connector.setScheme("https");
connector.setSecure(true);
connector.setPort(8443);
protocol.setSSLEnabled(true);
protocol.setKeystoreFile(keystore.getAbsolutePath());
protocol.setKeystorePass("changeit");
protocol.setTruststoreFile(truststore.getAbsolutePath());
protocol.setTruststorePass("changeit");
protocol.setKeyAlias("apitester");
return connector;
}
catch (IOException ex) {
throw new IllegalStateException("can't access keystore: [" + "keystore"
+ "] or truststore: [" + "keystore" + "]", ex);
}
}
http协议自动转向https
@Bean 官网:www.fhadmin.org
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
return tomcat;
}
private Connector initiateHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
Q&A
开启SSL之后在浏览器中访问,可能访问到的内容为空,主要是安全证书问题。有些浏览器存在安全证书问题时不会提示,不安全访问,而直接静止访问,可以更换一个浏览器试试。
相关推荐
对于Spring Cloud项目的源码下载,文档中提供了百度网盘的下载链接(https://pan.baidu.com/s/1zWNippNZ1eYL14zVD-4xxQ),提取码为qmu5。下载后可以通过阅读源码来深入了解Spring Cloud的实现原理和技术细节,这...
helloworld|[spring mvc,Spring Boot项目创建,单元测试](https://github.com/smltq/spring-boot-demo/blob/master/helloworld/HELP.md) web|[ssh项目,spring mvc,过滤器,拦截器,监视器,thymeleaf,lombok,jquery,...
项目名: 酒店管理系统 功能点: 酒店管理,OTA直连 技术栈: 前端: react网页web框架,app 使用谷歌跨平台框架 flutter 后端: springcloud全家桶 项目名: 酒店管理系统 功能点: 酒店管理,OTA直连 技术栈: 前端...
目前也是初次学习使用 spring boot、 spring cloud 、分布式, 搭建了一个简单spring cloud项目,没经验 使用不熟导致很多地方处理都很牵强, 本次分享出来也是希望有高人帮忙提点一二,给一些建设性意见,帮助提升,...
然后,可以使用Spring Initializr(https://start.spring.io/)在线生成项目结构,或者通过IDEA、Eclipse等集成开发环境的插件快速创建。 **3. 主启动类** Spring Boot应用的核心是主启动类,通常包含`@SpringBoot...
在本文中,我们将深入探讨如何使用Visual Studio Code (VSCode) 创建一个基础的Spring项目,并进行调试。首先,让我们理解Spring框架以及它在Java开发中的重要性。Spring 是一个开源的Java应用程序框架,它简化了...
用户可以选择项目的基本信息,如项目类型(Maven或Gradle)、语言(Java或Kotlin等)、Spring Boot版本、项目依赖等。完成后,它将自动生成一个包含所有配置和依赖的项目结构,可以直接导入到IDE中。 2. **项目结构...
Spring源码可以从官方GitHub仓库(https://github.com/spring-projects/spring-framework)下载,这里提供的压缩包"spring-framework-master - 副本"即是源码的副本。解压后,可以看到Spring框架的各个模块和组件。...
springcloud_教程 springcloud_教程 https://blog.csdn.net/hellozpc/article/details/83692496 https://blog.csdn.net/hellozpc/article/details/83692496
springCloud项目基础demo全部文件夹,包括文档桌面,代码中有说明与注释,附带参考的博客地址 项目文件夹介绍: springcloud-eureka ---注册中心(核心)参考博客地址: ...
集成了多个SpringBoot项目的SpringCloud项目,并且连接MySQL数据库成功的小Demo。需要进行系统开发可直接在这个基础上添加Controller和Service内容。下载前请先看项目的执行步骤及架构链接是否合适您使用:...
在这个通过 https://start.spring.io/ 生成的项目中,我们可以预见到以下关键知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一是起步依赖,它提供了一种简单的方式来添加所需的功能...
项目集成了以下功能: 1、服务注册与发现 2、Eureka用户认证 3、服务续约保活(心跳机制) 4、Eureka高可用 5、Eureka健康检测 6、服务下线 7、远程调用 8、负载均衡 9、服务雪崩 10、服务降级 11、Hystrix熔断器 12...
Spring Initializr(https://start.spring.io/)是一个在线工具,可以帮助我们快速初始化项目结构。在这里,我们可以选择项目类型、语言、Spring Boot版本以及所需的依赖。例如,如果我们需要一个基于Maven的Java...
前端项目:https://download.csdn.net/download/DeepLearning_/87351494 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库...
在本教程中,我们将深入探讨如何安装MySQL 8.0.11数据库并集成到Spring项目中。MySQL 8.0.11是MySQL数据库的一个重要版本,它提供了许多性能改进和新特性,如增强的SQL语法、更好的安全性和更高的可用性。Spring框架...
ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例 里面包含论坛, 购物商城 网页 后台管理的java项目集成 演示地址: http://106.75.216.49/bilibili/ (服务器不太稳定,可以尝试刷新,感谢...
集成HTTPS是Spring Boot项目中的一项重要安全配置,因为HTTPS能够确保数据传输的安全性,防止中间人攻击,保护用户隐私。本篇文章将深入探讨Spring Boot 1.0和2.0版本中如何集成HTTPS,并解决可能出现的问题。 1. *...
通过分析和运行这个示例项目,你可以更深入地了解如何在实际开发中运用 Spring Cloud Nacos,以及如何解决微服务架构中常见的问题。学习和掌握 Nacos 的使用,对于提升你的分布式系统设计和开发能力大有裨益。
Spring + Spring MVC + Mybatis + Maven搭建多模块的web项目 里面包含了很多配置方面的注释,方便日后维护。 采用了通用Mapper封装了单表的增删改查操作 github地址:https://gitee.com/free/Mapper 采用了分页...