当前位置: 首页 > news >正文

加载SSL证书

使用JDK1.8 开发工具包bin目录下的keytool.exe工具生成ssl密钥:

keytool -genkey -alias mykey -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.p 

  • -genkey: 表示创建密钥。
  • -alias: 保存时的别名。
  • -keyalg:加密算法选择,这里使用RSA。
  • -keystore:密钥的存放位置。
  • -validity:有效时间,单位是天。

配置项 

application.properties

server.port=8081
server.error.path=/log
server.servlet.session.timeout=30s
#设置应用程序的上下文路径为 /testc002。这意味着所有以 /testc002 开始的 URL 都将被认为属于这个应用程序。
server.servlet.context-path=/testc002
server.tomcat.uri-encoding=UTF-8
server.tomcat.max-threads=500
#表示 SSL 密钥存储库的名称为 safehttp.p。
server.sll.key-store=safehttp.p
#表示 SSL 密钥别名为 tomcathttpstest2。
server.sll.key-alias=tomcathttpstest2
#这行设置的是 SSL 密钥存储库的密码为 12345678
server.sll.key-store-password=12345678

pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>spring_Back</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.9.RELEASE</version><relativePath/></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

配置类

package org.example.config;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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import sun.security.util.SecurityConstants;import java.sql.Connection;
@Configuration
public class TomcatConfig {/*** 设置 Tomcat 的Server配置* @return*/@BeanTomcatServletWebServerFactory tomcatServletWebServerFactory(){TomcatServletWebServerFactory myFactory = new TomcatServletWebServerFactory(){//创建一个安全约束对象@Overrideprotected void postProcessContext(Context context) {SecurityConstraint constraint = new SecurityConstraint();constraint.setUserConstraint("CONFIDENTIAL");//设置为机密级别SecurityCollection connection = new SecurityCollection();//设置一个安全连接对象//作用到所有路由上connection.addPattern("/*");//加入 connection 对象到安全路由中去constraint.addCollection(connection);context.addConstraint(constraint);}};myFactory.addAdditionalTomcatConnectors(createConnector());return myFactory;}/*** 创建一个连接兼容Https请求* @return*/private Connector createConnector(){//tomcat 9 中//tomcat/conf/server.xml中不要使用org.apache.coyote.http11.Http11AprProtocol//要用HTTP/1.1Connector connector = new Connector("HTTP/1.1");connector.setScheme("http");connector.setPort(8080);connector.setSecure(true);//关闭ssl检查//设置跳转到8081 的端口connector.setRedirectPort(8081);return connector;}
}

控制类

package org.example.controller;import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class FirstController {@GetMapping("/hey")public String hey(){return "hey main";}
}

启动类

package org.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;@EnableAutoConfiguration
@ComponentScan
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class,args);}
}

此时访问将只能使用 http 协议 以及通过8080端口跳转到 8081.

相关文章:

加载SSL证书

使用JDK1.8 开发工具包bin目录下的keytool.exe工具生成ssl密钥&#xff1a; keytool -genkey -alias mykey -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.p -genkey&#xff1a; 表示创建密钥。-alias&#xff1a; 保存时的别名。-keyalg&#xff1a;加密算…...

redis 非关系型数据库

redis 非关系型数据库 redis 非关系型数据库&#xff0c;缓存型数据库 关系型数据库和非关系型数据库的区别&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;行和列 列&#xff1a;声明对象 行&#xff1a;记录对象的属性 表与表之间是有关联的&#xff0c;使用…...

Python配置与测试利器:Hydra + pytest的完美结合

简介&#xff1a;Hydra 和 pytest 可以一起使用&#xff0c;基于 Hydra Pytest 的应用可以轻松地管理复杂配置&#xff0c;并编写参数化的单元测试&#xff0c;使得Python开发和测试将变得更为高效。 安装&#xff1a; pip install hydra-core pytest案例源码&#xff1a;my…...

5.基于飞蛾扑火算法(MFO)优化的VMD参数(MFO-VMD)

代码的使用说明 基于飞蛾扑火算法优化的VMD参数 优化算法代码原理 飞蛾扑火优化算法&#xff08;Moth-Flame Optimization&#xff0c;MFO&#xff09;是一种新型元启发式优化算法&#xff0c;该算法是受飞蛾围绕火焰飞行启发而提出的&#xff0c;具有搜索速度快、寻优能力强的…...

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场&#xff0c;仅次于美国。近年来&#xff0c;随着中国经济的持续增长和人民生活水平的提高&#xff0c;医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大&#xff0c;为医药行业的发展创造了良好的政策环境。为推动医药…...

055-第三代软件开发-控制台输出彩虹日志

第三代软件开发-控制台输出彩虹日志 文章目录 第三代软件开发-控制台输出彩虹日志项目介绍控制台输出彩虹日志实现原理真实代码 总结 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QM…...

Os-hackNos-3

Os-hackNos-3 一、主机发现和端口扫描 主机发现&#xff0c;靶机地址192.168.80.145 arp-scan -l端口扫描&#xff0c;开放了22和80端口 nmap -P -sV 192.168.80.145二、信息收集 访问80端口 find the Bug You need extra WebSec翻译 找到Bug 你需要额外的网络安全路径扫描 d…...

时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测

时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测 目录 时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现HPO-ELM猎食者算法优化极限学习机时间序列预测 1.data为数据集…...

LeetCode:307. 区域和检索 - 数组可修改(树状数组 C++)

目录 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 实现代码与解析&#xff1a; 树状数组&#xff1a; 原理思路&#xff1a; 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组…...

909-2015-T3

文章目录 1.原题2.算法思想2.1.求树的高度2.2.求路径 3.关键代码4.完整代码5.输出结果 1.原题 试编写算法&#xff0c;求给定二叉树上从根节点到叶子节点的一条路径长度等于树的深度减一的路径&#xff08;即列出从根节点到该叶子节点的节点序列&#xff09;&#xff0c;若这样…...

【云原生】初识 Service Mesh

目录 一、什么是Service Mesh 二、微服务发展历程 2.1 微服务架构演进历史 2.1.1 单体架构 2.1.2 SOA阶段 2.1.3 微服务阶段 2.2 微服务治理中的问题 2.2.1 技术栈庞杂 2.2.2 版本升级碎片化 2.2.3 侵入性强 2.2.4 中间件多&#xff0c;学习成本高 2.2.5 服务治理功…...

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时&#xff0c;出现连接异常或连接重置错误&#xff1f; 答案&#xff1a;连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法&#xff1a; 确定服务器的…...

深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…...

羊大师教你如何有效解决工作中的挑战与压力?

在现代社会&#xff0c;工作问题一直是许多人头疼的难题。无论是从工作压力到职业发展&#xff0c;工作问题不仅会影响个人的心理健康&#xff0c;还可能对整个工作团队的效率和和谐产生负面影响。因此&#xff0c;如何有效解决工作问题成为了每个职场人士都需要面对的挑战。 …...

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、稳定性测试TPS…...

人工智能的时代---AI的影响

人工智能&#xff08;AI&#xff09;是当前科技领域的一个热门话题&#xff0c;它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶&#xff0c;从智能医疗到智能金融&#xff0c;人工智能正在渗透到我们生活的方方面面。在这篇文章中&#xff0c;我…...

LeetCode 每日一题 2023/11/13-2023/11/19

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/13 307. 区域和检索 - 数组可修改11/14 1334. 阈值距离内邻居最少的城市11/15 2656. K 个元素的最大和11/16 2760. 最长奇偶子数组11/17 2736. 最大和查询11/18 2342. 数…...

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…...

vue中原生H5拖拽排序_拖拽图片也是同样的道理

原文地址【vue中原生H5拖拽排序_拖拽图片也是同样的道理】 H5有基于拖拽的事件机制&#xff0c;如果你还不熟悉&#xff0c;请看我之前的文章【拖拽上传】中有介绍。 原生拖拽API实现 由于比较简单直接上代码了&#xff1a; <!DOCTYPE html> <html lang"en&qu…...

【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳

整体计算方法 在编写该代码的过程中寻找了多篇博文和论文&#xff0c;综合所有文章且按网上的以0时的方位角的0&#xff0c;且随时间累加累加至360度。我修改了博文和论文的一些角度的计算方法。得到一下代码与网站计算的方位角相互验证过&#xff0c;误差不超过1 验证网站 太…...

别只盯着GitHub!技术人“八小时之外”的自我修养:我们为什么需要莎士比亚和巴赫?

技术人的文艺复兴&#xff1a;当代码遇见莎士比亚的十二时辰 凌晨两点&#xff0c;硅谷某科技公司的会议室依然亮着灯。屏幕上跳动着GitHub提交记录&#xff0c;咖啡杯沿的唇印已经干涸。这是张默的第七个加班周&#xff0c;他忽然发现自己在调试神经网络时&#xff0c;下意识地…...

2026届必备的AI学术平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 伴随着人工智能生成内容变得越发普及起来&#xff0c;各种各样的检测系统针对文本来源的识别…...

保姆级教程:用Charles的Map Remote+Python Flask,5分钟搞定江苏图采小程序照片替换

零基础实战&#xff1a;5分钟搭建照片替换系统的完整指南 每次遇到必须现场拍照的小程序&#xff0c;是不是总让你头疼&#xff1f;光线不好、角度不对、表情僵硬——这些问题在江苏图采这类强制使用微信相机的小程序中尤为突出。今天我要分享的这套方案&#xff0c;不需要复杂…...

MySQL如何防止内部员工越权查看数据_实施严格的日志审计策略

开启MySQL通用查询日志会拖慢系统&#xff0c;仅在高并发写日志时明显&#xff1b;因其逐条记录所有语句并产生I/O压力&#xff0c;生产环境应禁用&#xff0c;改用精准审计方案。MySQL开启通用查询日志会拖慢系统吗会&#xff0c;但只在高并发写日志场景下明显。通用查询日志&…...

w3x2lni:魔兽地图格式转换架构深度解析

w3x2lni&#xff1a;魔兽地图格式转换架构深度解析 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 在魔兽争霸3地图开发领域&#xff0c;魔兽地图格式转换一直是开发者面临的核心技术挑战。w3x2lni作为一款专业的…...

深度解析Cursor AI编辑器:重塑人机协作编程工作流

1. 从零到一&#xff1a;深度解析Cursor AI编辑器的核心价值与上手心法 如果你是一名开发者&#xff0c;最近一定在技术社区里频繁听到“Cursor”这个名字。它不仅仅是一个披着AI外衣的代码编辑器&#xff0c;更是一个试图重新定义“人机协作编程”工作流的革命性工具。我使用C…...

从《原神》到你的项目:拆解Unity RPG角色动画融合(Animation Blending)的底层逻辑与实战配置

从《原神》到你的项目&#xff1a;拆解Unity RPG角色动画融合的底层逻辑与实战配置 当《原神》的角色在璃月港的石板路上从漫步自然过渡到冲刺时&#xff0c;那种行云流水的动作衔接绝非偶然。这背后是Unity动画系统中被称为Animation Blending&#xff08;动画融合&#xff09…...

ARM TrustZone与AHB5总线安全机制详解

1. ARM TrustZone安全机制深度解析 在嵌入式系统安全领域&#xff0c;ARM TrustZone技术已经成为硬件级安全方案的行业标准。我第一次接触这项技术是在开发一款金融支付终端时&#xff0c;当时我们需要在同一个Cortex-A53处理器上同时运行支付应用和第三方应用&#xff0c;而Tr…...

Wecom酱:企业微信消息推送开源方案全解析

Wecom酱&#xff1a;企业微信消息推送开源方案全解析 【免费下载链接】wecomchan 微信推送服务Server酱的开源替代。通过企业微信向微信推送消息的配置文档、直推函数和可自行搭建的在线服务代码。 项目地址: https://gitcode.com/gh_mirrors/we/wecomchan Wecom酱是一…...

CloudCLI插件开发实战:从脚手架到依赖分析器

1. 项目概述&#xff1a;一个为IDE插件开发者准备的“开箱即用”脚手架 如果你正在为Claude Code UI&#xff08;或者大家更习惯叫它CloudCLI&#xff09;开发一个自定义插件&#xff0c;但苦于不知道从何下手&#xff0c;那么这个名为 cloudcli-plugin-starter 的项目就是你…...