SringBoot 如何使用HTTPS请求及Nginx配置Https
SringBoot 如何使用HTTPS请求及Nginx配置Https
- SringBoot 如何使用HTTPS请求
- 生成证书
- 导入证书及配制
- 创建配置类
- 将pfx转成.key和.pem
- Nginx 安装SSL依赖
- ./configure 安装依赖
- 编译
- 安装完openssl后报了新错
- Nginx配置
SringBoot 如何使用HTTPS请求
生成证书
由于业务数据在传输过程中需要保密,我们组小同学写了一个HTTPS接口。该接口用到的证书是通过JDK自带的证书生成工具keytool,使用keytool来生成证书。打开终端或者命令行输入命令,回车,然后输入信息,其中秘钥库口令和秘要口令最好输入同一个,并且记下这个口令。
//keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
keytool -genkey -alias kshttps -keyalg RSA -keysize 2048 -validity 36524 -keystore kshttps.jks
keytool -importkeystore -srckeystore kshttps.jks -destkeystore kshttps.pkcs12 -deststoretype pkcs12
openssl pkcs12 -nodes -in kshttps.pkcs12 -out kshttps.pem
openssl pkcs12 -nocerts -nodes -in kshttps.pkcs12 -out kshttps.key
- key -genkey 生成
- -alias 别名
- -storetype 指定密钥库的类型,eg:JKS 、PKCS12(通常以.p12或.pfx两种文件形式出现)、PKCS11、BCFKS、DKS、Windows-MY、Windows-ROOT、PEM(不能直接用Keytool导出,但可用OpenSSL工具一起使用)
- -keyalg RSA 代表算法.RSA是非对称加密
- -keysize 密钥长度
- -keystore 生成路径文件名
- -validity有效期
导入证书及配制
证书生成完成后,可以导入到到项目中,将其复制到Springboot项目的resources目录下
配置yml配置文件即可
server:port: 8080ssl:#开启httpsenabled: true#指定存放证书的密钥库文件的位置key-store: classpath:springboot.keystore#密钥库文件的格式key-store-type: PKCS12#别名,需要与创建密钥库时的别名一致key-alias: springboot-httpskey-password: 123456
key-store-password: 123456
http:port: 8090
创建配置类
@Configuration
public class HttpsConfig {@Value("${http.port}")private Integer httpPort;@Beanpublic ServletWebServerFactory servletContainer() {Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);connector.setPort(httpPort);final TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();tomcat.addAdditionalTomcatConnectors(connector);return tomcat;}
}
将pfx转成.key和.pem
为什么转呢,因为Nginx的配置中是要求一个.key和.pem格式的,其他可否,我没有验证。大家可以自己查询。但我是直接转成两后缀的文件了。转换工具可能过openssl转,参考命令如下所示:
openssl pkcs12 -in keystore.pfx -out cert.key -nocerts
openssl pkcs12 -in keystore.pfx -out cert.pem -nodes
其他转换当了解了,也附在本文中,不想学习的可跳过这部分
1.pem转换pfxopenssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:1234562.pem转换jksopenssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:123456keytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 1234563.pfx转换pemopenssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes4.pfx转换jkskeytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 1234565.jks转换pemkeytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456openssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes6.jks转化pfxkeytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
Nginx 安装SSL依赖
Nginx配置HTTPS,需要先安装依赖。否用支报如下错误
如上所示,我们可以执行以下命令解决
./configure 安装依赖
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
如果报以下错误提示,请顺序读完,如果不报请跳至下一章节
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
解决这个问题,首先需要检查是否安装了OpenSSL,通过openssl version查看,未安装可以参考以下命令进行安装
yum -y install openssl openssl-devel
如果确定已安装,可找下安装位置。使用which openssl 命令。但需要注意,通过此命令如果找到的是安装后的命令则无效,仍不好使,需要找到安装源路径,如无法找到,可以通过https://www.openssl.org/source/ 下载进行安装。安装成功后,重新执行以下命令和make && install。 出现了新错误,莫慌,请看下去
./configure --with-openssl=/usr/openssl --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
find / -name ssl.h
编译
make && make install
安装完openssl后报了新错
到这步后,需要修改下Nginx源路径下的 auto/lib/openssl/conf
vi auto/lib/openssl/conf
修改内容如下所示:
Nginx配置
server {listen 443 ssl;server_name 127.0.0.1;ssl_certificate cert.pem;ssl_certificate_key cert.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;location /wscc-interface {# root html;# index index.html index.htm;proxy_pass http://127.0.0.1:443/;}}
相关文章:

SringBoot 如何使用HTTPS请求及Nginx配置Https
SringBoot 如何使用HTTPS请求及Nginx配置Https SringBoot 如何使用HTTPS请求生成证书导入证书及配制创建配置类将pfx转成.key和.pem Nginx 安装SSL依赖./configure 安装依赖编译安装完openssl后报了新错 Nginx配置 SringBoot 如何使用HTTPS请求 生成证书 由于业务数据在传输过…...

14.基于人类反馈的强化学习(RLHF)技术详解
基于人类反馈的强化学习(RLHF)技术详解 RLHF 技术拆解 RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,我们按三个步骤分解: 预训练一个语言模型 (LM) ;训练一个奖励模型 (Reward Model,RM) …...

Linux Radix tree简介
文章目录 前言一、Radix tree简介二、Operations2.1 Lookup2.2 Insertion2.3 Deletion 三、Linux内核API3.1 初始化3.2 radix_tree_insert/delete3.3 radix_tree_preload3.4 radix_tree_lookup3.5 radix_tree_tag_set3.6 radix_tree_tagged 四、address_space4.1 简介4.2 相应数…...

maven 下载jar包加载顺序
在 Maven 构建过程中,依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置,以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点: 仓库配置优先级 项目 pom.xml 文件中的仓库配置ÿ…...

新增多种图表类型,新增视频、流媒体、跑马灯组件,DataEase开源数据可视化分析工具v2.7.0发布
2024年6月11日,人人可用的开源数据可视化分析工具DataEase正式发布v2.7.0版本。 这一版本的功能变动包括:图表方面,新增对称条形图、桑基图、流向地图、进度条等图表类型,并对已有的仪表盘、指标卡、明细表、汇总表、水波图、象限…...

supOS工业操作系统的由来
作为“世界制造工厂”,我国拥有最庞大、最完整的工业企业集群与产业链,其中既有众多全球性制造巨头,又有数以百万计的中小型工厂。但这些企业的制造工厂在推进数字化、网络化、智能化进程时普遍受阻:1)系统软件定制程度…...

6spark期末复习
1)var a:Double5;var b:Int7;那么print(a*b) 2) var a:Int5; var bif(a>6) 7 println(b) 3)var a:Int16; var b:Int13; var cif(a>b) 5 else 7; println(c) 4. object TestDemo { print("B") def main(args: Array[String]): Unit { } } 5 def mai…...

C语言背景⾊、线条颜⾊和填充颜⾊有什么区别?何时使⽤?
一、问题 背景⾊、线条颜⾊和填充颜⾊,这⼏种颜⾊有什么区别?什么时候使⽤? 二、解答 背景⾊:是整个屏幕的底⾊,设置之后,屏幕空⽩区域都变成该颜⾊。 线条颜⾊:是画线时所⽤的颜⾊。⽂字输出也…...

Python 植物大战僵尸游戏【含Python源码 MX_012期】
简介: "植物大战僵尸"(Plants vs. Zombies)是一款由PopCap Games开发的流行塔防游戏,最初于2009年发布。游戏的概念是在僵尸入侵的情境下,玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…...

搜索文档的好助手
搜索文档的好助手 AnyTXT SearcherEverything AnyTXT Searcher 文本内容搜索 下载:AnyTXT Searcher Everything 它能够基于文件名快速定文件和文件夹位置 下载:Everything...

如何计算 GPT 的 Tokens 数量?
基本介绍 随着人工智能大模型技术的迅速发展,一种创新的计费模式正在逐渐普及,即以“令牌”(Token)作为衡量使用成本的单位。那么,究竟什么是Token呢? Token 是一种将自然语言文本转化为计算机可以理解的…...

在远程服务器上安装虚拟环境
一、Anaconda环境安装 先下载Anaconda Linux版,并将其重命名为anaconda2020.sh wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.07-Linux-x86_64.sh --header"User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (K…...

《站在2024年的十字路口:计算机专业是否仍是高考生的明智之选?》
文章目录 每日一句正能量前言行业竞争现状行业饱和度和竞争激烈程度[^3^]新兴技术的影响[^3^]人才需求的变化[^3^]行业创新动态如何保持竞争力 专业与个人的匹配度判断专业所需的技术能力专业核心课程对学生的要求个人兴趣和性格特点专业对口的职业发展要求实践和经验个人价值观…...

从零手写实现 nginx-23-nginx 对于 cookie 的操作
前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...

Python语言例题集(015)
#!/usr/bin/python3 #使用列表模仿队列的操作。 class Queue(): def init(self): self.queue[] def enqueue(self,data):self.queue.insert(0,data)def dequeue(self):if len(self.queue):return self.queue.pop()return "队列是空的"qQueue() q.enqueue(‘Grape’…...

Halcon C++ XLD 数据写入图片
1. xld转换为Region 生成与调用函数 gen_cross_contour_xld (CrossXld, Rows, UpdateCols, 6, 0) get_xld_region (CrossXld, xldRegions)函数实现 get_xld_region * 计算XLD个数 count_obj (BaseXld, Number) * 生成空的区域(结果) gen_empty_region…...

一文入门vim
先来波快问快答。 第一个问题,vim是什么? vim就是一文本编辑器。 第二个问题,我们为什么要使用vim? 好像在终端中可选择使用的文本编辑器也不多(其他有,但是相对而言vim用的比较广泛) 第三…...

植物ATAC-seq文献集锦(三)——果实发育篇
ATAC-seq在植物研究领域的应用我们已经介绍2期了,本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 文献一:Ident…...

在自己的电脑上搭建我的世界Java版服务器
很多朋友,喜欢玩Minecraft,也希望搭建一个服务器,用于和小伙伴联机; 并且,拥有服务器后,即使所有玩家都下线,“世界”依旧在运行,玩家可以随时参与其中,说不定一上线&am…...

1.PyQt6库和工具库QTDesigner安装
1.安装PyQT6和pyqt6-tools 1. PyQt6库是PyQt的开发库 2.pyqt6-tool时QTDesigner设计器工具支持库 pip install PyQt6 pip install pyqt6-tools 2.在Pycharm中配置外部工具QTDesigner和PYGIC 配置外部工具QTDesigner 1. QTDesigner是QT界面设计器 2.打开Pycharm->Settin…...

Hbase搭建教程
Hbase搭建教程 期待您的关注 ☀小白的Hbase学习笔记 目录 Hbase搭建教程 1.上传hbase的jar包并解压 2.重新登录 3.启动zookeeper 4.配置环境变量 5.关闭ZK的默认配置 6.修改hbase-site.xml文件 7.修改regionservers文件 8.将配置好的文件分发给其它节点 9.配置环境变量…...

利用three-csg-ts对做物体交互式挖洞
默认物体均为居中,如果指定位置没有发生偏移,可能是因为在执行布尔操作之前没有正确设置变换。确保在进行布尔运算之前应用所有必要的变换。以下是经过修正的完整代码示例,它会确保圆柱正确旋转并与盒子进行 CSG 操作。 安装依赖 首先&…...

腾讯云对象存储不绑定自定义备案域名不给下载应该如何处理?
从2024年1月1日起,腾讯云对象存储(COS)将实施新政策:新创建的存储桶不再支持使用path-style域名(即存储桶绝对路径)。此外,使用默认域名访问的新存储桶将不再支持任意类型文件的预览,…...

C 语言实例 - 输出数组
使用 for 循环输出数组 #include <stdio.h>int main() {int array[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};int loop;for(loop 0; loop < 10; loop)printf("%d ", array[loop]);return 0; }输出结果为: 1 2 3 4 5 6 7 8 9 0使用 for 循环逆向输…...

回溯算法练习题(2024/6/10)
1组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2: 输入:n …...

机器学习--线性模型和非线性模型的区别?哪些模型是线性模型,哪些模型是非线性模型?
文章目录 引言线性模型和非线性模型的区别线性模型非线性模型 总结线性模型非线性模型 引言 在机器学习和统计学领域,模型的选择直接影响到预测的准确性和计算的效率。根据输入特征与输出变量之间关系的复杂程度,模型可以分为线性模型和非线性模型。线性…...

[linux] Qwen2Tokenizer报错 transformers版本问题
上午没问题,下午pull了新代码,就有了报错。。 发现是transformers版本问题。但。。其实我都默认安的是最新版本。。 也许这就是人生吧。。 报错: File "/Pai-Megatron-Patch/megatron_patch/tokenizer/__init__.py", line 213…...

算法刷题笔记 单链表(C++实现)
文章目录 题目描述基本思路实现代码 题目描述 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数;删除第 k个插入的数后面的一个数;在第 k个插入的数后插入一个数。 现在要对该链表进行M次操作&#x…...

Oracle 排查慢SQL
Oracle 排查慢SQL select * from v s q l a r e a w h e r e r o w n u m < 10 ; s e l e c t ∗ f r o m v sqlarea where rownum<10; select * from v sqlareawhererownum<10;select∗fromvsql where rownum<10; select * from dba_hist_sqltext where rownum<…...

java技术专家面试指南80问【java学习+面试宝典】(七)
Dubbo需要 Web 容器吗? 不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。 PrintStream、BufferedWriter、PrintWriter的比较? PrintStream类的输出功能非常强大,通常如果需要输出文本内容,都应…...