全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解spring boot配置 ssl

ssl协议位于tcp/ip协议与各种应用协议之间,为数据通信提供安全支持。

ssl协议分为两层:

  1. ssl记录协议,它建立在可靠传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能支持。
  2. ssl握手协议,它建立在ssl记录协议之上,用于实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等

基于B/S的web应用,是通过https来实现ssl的。https是http的安全版,即在http下加入ssl层,https的安全基础是ssl;

我们开始在spring boot中使用ssl设置;

1.生成证书

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

keytool -genkey -alias tomcat
  

  

在用户路径下生成 .keystore文件 ,这就是我们要使用的证书文件。

2.spring boot配置ssl

将.keystore文件复制到项目根目录,然后配置application.properties中做ssl配置

server.ssl.key-store=.keystore

server.ssl.key-store-password=密码

server.ssl.keyStoreType = JKS

server.ssl.keyAlias=tomcat 

启动项目

  

访问地址 https://localhost:8080

    

3、http转https

要实现这个功能,我们需要配置TomcatEmbeddedServletContainerFactory,并且添加tomcat的connector来实现。

package com.example;

import org.apache.catalina.Context;

import org.apache.catalina.connector.Connector;

import org.apache.tomcat.util.descriptor.web.SecurityCollection;

import org.apache.tomcat.util.descriptor.web.SecurityConstraint;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;

import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;

import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;

import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;

import org.springframework.boot.web.servlet.ErrorPage;

import org.springframework.context.annotation.Bean;

import org.springframework.http.HttpStatus;

import org.springframework.stereotype.Component;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

 

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.TimeUnit;

 

/**

 * Created by xingzhuipingye on 2017/5/7.

 */

@Controller

@SpringBootApplication

 

public class ApplicationMy {

  @RequestMapping("/")

  public String index(Model model){

    Person single = new Person("aa",11);

    List<Person> list = new ArrayList<>();

    Person p1 = new Person("xx",11);

    Person p2 = new Person("yy",22);

    Person p3 = new Person("zz",33);

    list.add(p1);

    list.add(p2);

    list.add(p3);

    model.addAttribute("singlePerson",single);

    model.addAttribute("people",list);

    return "index";

  }

  public static void main(String[] args){

    SpringApplication.run(ApplicationMy.class);

  }

 

  @Bean

  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(httpConnector());

    return tomcat;

  }

 

  @Bean

  public Connector httpConnector(){

    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");

    connector.setScheme("http");

    connector.setPort(8080);

    connector.setSecure(false);

    connector.setRedirectPort(8088);

    return connector;

  }

 

} 

注:我在application.properties 中修改了端口为8088

此时我们访问http://localhost:8080 就会跳转到 https://localhost:8088  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # boot配置  # ssl  # boot  # springboot配置ssl后启动一直是端口被占用的解决  # SpringBoot配置SSL同时支持http和https访问实现  # RabbitMQ开启SSL与SpringBoot连接测试的配置方法  # 使用SpringBoot配置https(SSL证书)  # spring boot配置ssl实现HTTPS的方法  # SpringBoot实战之SSL配置详解  # spring boot配置ssl(多cer格式)超详细教程  # 来实现  # 就会  # 我在  # 这就是  # 它是  # 数据通信  # 中都  # 即在  # 要使  # 两层  # 大家多多  # 可以用来  # 跳转到  # 有一个  # 中做  # 身份认证  # 传输协议  # 敲入  # TomcatEmbeddedServletContainerFactory  # java 


相关文章: c++ stringstream用法详解_c++字符串与数字转换利器  如何配置FTP站点权限与安全设置?  太原网站制作公司有哪些,网约车营运证查询官网?  如何通过.red域名打造高辨识度品牌网站?  如何在阿里云虚拟主机上快速搭建个人网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  建站之星在线客服如何快速接入解答?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建站主机如何安装配置?新手必看操作指南  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  浅析上传头像示例及其注意事项  如何通过VPS搭建网站快速盈利?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何用PHP快速搭建CMS系统?  seo网站制作优化,网站SEO优化步骤有哪些?  动图在线制作网站有哪些,滑动动图图集怎么做?  微信小程序 五星评分(包括半颗星评分)实例代码  建站之星代理平台如何选择最佳方案?  家庭建站与云服务器建站,如何选择更优?  如何制作一个表白网站视频,关于勇敢表白的小标题?  魔方云NAT建站如何实现端口转发?  C#怎么使用委托和事件 C# delegate与event编程方法  如何通过网站建站时间优化SEO与用户体验?  建站主机是否等同于虚拟主机?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星×万网:智能建站系统+自助建站平台一键生成  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何在万网自助建站中设置域名及备案?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  小建面朝正北,A点实际方位是否存在偏差?  深圳网站制作培训,深圳哪些招聘网站比较好?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  建站主机SSH密钥生成步骤及常见问题解答?  python的本地网站制作,如何创建本地站点?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何续费美橙建站之星域名及服务?  c# 在ASP.NET Core中管理和取消后台任务  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  建站之星如何通过成品分离优化网站效率?  装修招标网站设计制作流程,装修招标流程?  黑客如何利用漏洞与弱口令入侵网站服务器? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。