SpringBoot配置SSL同时支持http和https访问实现

目录
  • 第一步:生成证书
  • 第二步:获取证书
  • 第三步:增加SSL配置
  • 第四步:配置https访问

传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。

这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

第一步:生成证书

在配置 TLS/SSL 之前需要先拿到相应的签名证书,配置了JAVA开发环境,可以使用 Java 下面的 Keytool 来生成证书,打开控制台输入:
keytool -genkey -alias michaelSpica -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore E:\Temp\michaelSpica.p12 -validity 3650

  • -alias 别名(可随便取)
  • -storetype 指定密钥仓库类型
  • -keyalg 生证书的算法名称,RSA是一种非对称加密算法
  • -keysize 证书大小
  • -keystore 生成的证书文件的存储路径(相对路径或绝对路径)
  • -validity 证书的有效期

如图:

注:正式环境中请填写标准值

第二步:获取证书

根据路径找到生成好的证书,把证书复制到项目里,如图:

第三步:增加SSL配置

application.yml 中添加如下配置,如图:

第四步:配置https访问

添加Spring Boot启动时,读取配置信息,如

(注:请添加必要的jar)

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
package com.michael.protocol.config;

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by michael on 2019/2/23.
 */
@Configuration
public class TomcatConfig {

    @Value("${server.http.port}")
    private int httpPort;

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }

    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}

注:这是 spring boot 2.0.X 版本的

至此,所有工作已经完成,启动项目,如:

可以看到两个端口,说明已经成功,即可通过以下两种方式进行访问:
https://localhost:443
http://localhost:80

到此这篇关于SpringBoot配置SSL同时支持http和https访问实现的文章就介绍到这了,更多相关SpringBoot SSL支持http和https内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用SpringBoot配置https(SSL证书)

    目录 SpringBoot配置https(SSL证书) 仅需三步 1.把tomcat目录里面的.jks文件 2.配置application.yml 3.接下来是重定向 SpringBoot 改造成https访问 1.生成密钥证书 2.将生成的密钥证书拷贝到项目中的resource中 3.修改项目配置文件application.properties 4.启动项目,直接访问项目即可 SpringBoot配置https(SSL证书) 最近在做微信小程序,https是必须条件 仅需三步 SpringBo

  • 在Nginx服务器上安装SSL证书完成HTTPS请求的步骤详解(springboot项目)

    目录 步骤1:下载证书到本地 步骤2:(可选)在Nginx独立服务器上安装证书 http本博客是在我完成了http重定向https配置之后来总结的,如有问题请大家见谅!如有问题请评论留言!!! 阿里云文档地址:https://help.aliyun.com/document_detail/98728.htm?spm=a2c4g.11186623.2.7.550a7845ysZdw5#section-liy-o8x-gug 步骤1:下载证书到本地 1.登录SSL证书控制台. 2.在概览页面,单击证

  • SpringBoot配置SSL同时支持http和https访问实现

    目录 第一步:生成证书 第二步:获取证书 第三步:增加SSL配置 第四步:配置https访问 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障. SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式.传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后

  • springboot配置ssl后启动一直是端口被占用的解决

    目录 springboot配置ssl后启动一直是端口被占用 springboot端口被占用一招解决 解决步骤 springboot配置ssl后启动一直是端口被占用 srpingboot 配置 SSL 一直说密码不对然后端口被占用 我之前是这么写的 然后运行报错 怎么解决的呢 就是 把文件放到了 根目录 然后这样写 就解决了 // An highlighted blo #端口号 server.port=8089 #SSL配置 server.ssl.key-store=2503725_xcx.goo

  • Tomcat10配置端口号为443(使用https访问)

    目录 前言 前期准备 具体操作步骤 HTTP 自动跳转 HTTPS 的安全配置(可选) 如何检验配置是否成功 结语 前言 tomcat配置好了以后默认是使用8080端口访问的,也就是需要在使用"域名.com:8080"才能访问.这篇总结一下如何修改tomcat配置,使可以用"http://域名.com"或"https://域名.com" 访问. 前期准备 环境配置: 腾讯云轻量应用服务器: CentOS 8.2 64bit 远程访问推荐使用图形化

  • SpringBoot中配置SSL的同时支持http和https访问

    目录 第一步:生成证书 第二步:获取证书 第三步:增加SSL配置 第四步:配置https访问 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障. SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式. 传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之

  • nginx配置ssl证书实现https访问的示例

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的域名点"解析",进入解析页面后选择[添加解析]按钮会弹出如下页面: 主机记录这里选择@,记录值就是服务器ip地址,确认. 三,申请ca证书 在阿里云控制台-产品与服务-安全(云盾)-CA证书服务(数据安全),点击购买证书, 选择"免费版DV SSL",点击立即购买: 然

  • Nginx本地配置SSL访问的实例教程

    目录 前言 1. 配置步骤 1.1生成证书 1.2 转换证书格式 1.3 配置nginx 1.4 注意 总结 前言 有时候,我们正式的环境需要配置Https访问!!! 很多时候,我们需要拿到正式环境的SSL证书,开通域名,等一系列的工作,才能进行我们的Https配置功能. 本地的开发环境,没有相应的证书,也是不太好进行配置和测试等相关的操作!!! 那么我们今天就来谈一下,如何在本地开发环境,配置Https的访问!!! 那我们以nginx服务器为例!!!^_^ 1. 配置步骤 1.1生成证书 ke

  • nginx使用ssl模块配置支持HTTPS访问的方法

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求: 做一个网站域名为 www.localhost.cn 要求通过https://www.localhost.cn进行访问. 10.10.100.8 www.localhost.cn 实验步骤: 1.首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel 2.创建服务

  • 详解nginx使用ssl模块配置支持HTTPS访问

    背景: 项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 dmsdbj.com 要求通过HTTPS://dmsdbj.com进行访问. SSL英文名为Secure Socket Layer,安全套接字层.SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输. 本篇博客是对这个操作步骤的详解. 前提: 1.

  • springboot配置https访问的方法

    1.购买或本地生成ssl证书 要使用https,首先需要证书,获取证书的两种方式: 1.自己通过keytool生成 2.通过证书授权机构购买 ###### 作为演示,我们使用keytool生成: C:\Users\xxx>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什

随机推荐