`
zhoumeng87
  • 浏览: 68747 次
文章分类
社区版块
存档分类
最新评论

Spring项目HTTPS

阅读更多

简介

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-boot示例项目

    helloworld|[spring mvc,Spring Boot项目创建,单元测试](https://github.com/smltq/spring-boot-demo/blob/master/helloworld/HELP.md) web|[ssh项目,spring mvc,过滤器,拦截器,监视器,thymeleaf,lombok,jquery,...

    spring cloud完整项目

    目前也是初次学习使用 spring boot、 spring cloud 、分布式, 搭建了一个简单spring cloud项目,没经验 使用不熟导致很多地方处理都很牵强, 本次分享出来也是希望有高人帮忙提点一二,给一些建设性意见,帮助提升,...

    利用vscode创建的spring基础调试项目

    在本文中,我们将深入探讨如何使用Visual Studio Code (VSCode) 创建一个基础的Spring项目,并进行调试。首先,让我们理解Spring框架以及它在Java开发中的重要性。Spring 是一个开源的Java应用程序框架,它简化了...

    spring boot入门的第一个项目

    然后,可以使用Spring Initializr(https://start.spring.io/)在线生成项目结构,或者通过IDEA、Eclipse等集成开发环境的插件快速创建。 **3. 主启动类** Spring Boot应用的核心是主启动类,通常包含`@SpringBoot...

    SpringCloud项目源码下载.docx

    对于Spring Cloud项目的源码下载,文档中提供了百度网盘的下载链接(https://pan.baidu.com/s/1zWNippNZ1eYL14zVD-4xxQ),提取码为qmu5。下载后可以通过阅读源码来深入了解Spring Cloud的实现原理和技术细节,这...

    通过https://start.spring.io/生成的Spring Boot 项目

    用户可以选择项目的基本信息,如项目类型(Maven或Gradle)、语言(Java或Kotlin等)、Spring Boot版本、项目依赖等。完成后,它将自动生成一个包含所有配置和依赖的项目结构,可以直接导入到IDE中。 2. **项目结构...

    构建为eclipse项目的spring源码

    Spring源码可以从官方GitHub仓库(https://github.com/spring-projects/spring-framework)下载,这里提供的压缩包"spring-framework-master - 副本"即是源码的副本。解压后,可以看到Spring框架的各个模块和组件。...

    springcloud教程项目代码

    springcloud_教程 springcloud_教程 https://blog.csdn.net/hellozpc/article/details/83692496 https://blog.csdn.net/hellozpc/article/details/83692496

    通过https://start.spring.io/生成的Spring Boot 1.5.17项目

    在这个通过 https://start.spring.io/ 生成的项目中,我们可以预见到以下关键知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一是起步依赖,它提供了一种简单的方式来添加所需的功能...

    springCloud全部基础的demo项目.rar

    springCloud项目基础demo全部文件夹,包括文档桌面,代码中有说明与注释,附带参考的博客地址 项目文件夹介绍: springcloud-eureka ---注册中心(核心)参考博客地址: ...

    SpringCloud项目集成多个SpringBoot连接数据库成功

    集成了多个SpringBoot项目的SpringCloud项目,并且连接MySQL数据库成功的小Demo。需要进行系统开发可直接在这个基础上添加Controller和Service内容。下载前请先看项目的执行步骤及架构链接是否合适您使用:...

    Spring Cloud项目技术解决方案闪电战

    项目集成了以下功能: 1、服务注册与发现 2、Eureka用户认证 3、服务续约保活(心跳机制) 4、Eureka高可用 5、Eureka健康检测 6、服务下线 7、远程调用 8、负载均衡 9、服务雪崩 10、服务降级 11、Hystrix熔断器 12...

    Spring Boot课件1 —— 创建和运行Spring Boot项目

    Spring Initializr(https://start.spring.io/)是一个在线工具,可以帮助我们快速初始化项目结构。在这里,我们可以选择项目类型、语言、Spring Boot版本以及所需的依赖。例如,如果我们需要一个基于Maven的Java...

    基于SpringCloud的校园二手书交易系统源码+项目说明.zip

    前端项目:https://download.csdn.net/download/DeepLearning_/87351494 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库...

    如何使用Java Spring Boot执行RAG架构GenAI项目的示例.zip

    接着,我们需要创建一个新的Spring Boot项目,可以使用Spring Initializr(https://start.spring.io/)来快速生成基本的项目结构。选择Java语言,设置所需的Spring Boot版本,并添加Web和Actuator依赖,这将使我们的...

    spring项目jar包&mysql8;.0.11安装教程

    在本教程中,我们将深入探讨如何安装MySQL 8.0.11数据库并集成到Spring项目中。MySQL 8.0.11是MySQL数据库的一个重要版本,它提供了许多性能改进和新特性,如增强的SQL语法、更好的安全性和更高的可用性。Spring框架...

    spring boot https (1.0和2.0)

    集成HTTPS是Spring Boot项目中的一项重要安全配置,因为HTTPS能够确保数据传输的安全性,防止中间人攻击,保护用户隐私。本篇文章将深入探讨Spring Boot 1.0和2.0版本中如何集成HTTPS,并解决可能出现的问题。 1. *...

    Spring Cloud Nacos示例

    通过分析和运行这个示例项目,你可以更深入地了解如何在实际开发中运用 Spring Cloud Nacos,以及如何解决微服务架构中常见的问题。学习和掌握 Nacos 的使用,对于提升你的分布式系统设计和开发能力大有裨益。

    Spring+Spring MVC+Mybatis+Maven搭建多模块的web项目

    Spring + Spring MVC + Mybatis + Maven搭建多模块的web项目 里面包含了很多配置方面的注释,方便日后维护。 采用了通用Mapper封装了单表的增删改查操作 github地址:https://gitee.com/free/Mapper 采用了分页...

    mybatis在非spring环境下如何使用

    一般使用mybatis的环境,大多都是别人已经配置...我文章中的方法不基于spring,一般很少会在真实项目中直接使用。我把我的搭建过程记录下来给有用的人吧。 https://blog.csdn.net/lxyoucan/article/details/126162493

Global site tag (gtag.js) - Google Analytics