Nginx代理https请求的操作过程

理论很简单,过程很曲折,版本适配的问题要小心。

场景:
要和前端进行联调,我本地后端用了https,证书是自制的,主要是页面里面有一些oauth2认证的地方,需要跳转。
比如https://aaa.com/profile.html,认证通过之后要跳转到这个页面。

前端的电脑,直接访问后台的页面都是正常的,于是要加域名来实现上面的需求。

后端的电脑配置hosts,192.168.1.1 aaa.com
前端的电脑配置127.0.0.1 aaa.com

然后使用nginx代理,难点在于tomcat自制的jks证书不是nginx支持的,所以要进行转换。
转换的时候要用到openssl,注意其中有一个算法的问题,最好使用openssl旧版本,1.xxx,用新版本会涉及到一个算法不支持的问题,还需要调整。主要是我调整了没有成功,缺少对应的库。

keytool -list -keystore server.jks

会使用到里面的srcalias,不过用不用这个命令都可以,因为tomcat证书,后端肯定是配置了alias,用的就是配置的server.ssl.key-alias=tomcat。

2.将jks文件导出为Nginx所需要的文件.crt和.key
2.1 将”.jks”转为”.p12”(PKCS12格式的证书库)

keytool -importkeystore -srckeystore oldkeystore.jks -srcalias tomcat -destkeystore newkeystore.p12 -deststoretype PKCS12

查看新格式(pkcs12)证书库

keytool -deststoretype PKCS12 -keystore newkeystore.p12 -list

2.2提取证书

openssl pkcs12 -in newkeystore.p12 -nokeys -clcerts -out server-ssl.crt
openssl pkcs12 -in newkeystore.p12 -nokeys -cacerts -out gs_intermediate_ca.crt

server-ssl.crt是SSL证书,gs_intermediate_ca.crt是中级证书,俩个合并到一起才是nginx服务器所需要的证书

2.3合并证书

cat server-ssl.crt gs_intermediate_ca.crt >server.crt

此时server.crt是一个完成的证书
合并证书这里使用的是cat命令,其实就是两个证书的输出合并到同一个里面,但是我的不知道为什么gs_intermediate_ca.crt这个是空的,所以等于server.crt 就是 server-ssl.crt

2.4提取私钥

openssl pkcs12 -nocerts -nodes -in newkeystore.p12 -out server.key

server {listen       443  ssl;server_name  aaa.com;#charset koi8-r;#access_log  logs/host.access.log  main;ssl_certificate server.crt;ssl_certificate_key server.key;location / {proxy_pass https://192.168.1.1:443;  # 将请求转发到 https://example.comproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# SSL specific settingsproxy_ssl_verify off;  # 如果你信任目标服务器,可以关闭 SSL 验证# proxy_ssl_trusted_certificate /path/to/trusted/ca/certs;  # 如果启用 SSL 验证,指定受信任的 CA 证书# proxy_ssl_verify_depth 2;  # SSL 验证的深度}

nginx用的是1.18版本,注意证书配置位置是相对conf的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka(二):在WSL搭建Schema Registry

目录 1 Avro与Schema Registry2 搭建Schema Registry2.1 下载Confluent并解压2.2 设置环境变量2.3 修改配置2.4 启动服务 3 API列表 1 Avro与Schema Registry Apache Avro 是一种高效的数据序列化系统,用于在不同的应用程序和平台之间传输和存储数据。它提供了一种…

处理视频的新工具:UniFab 2.0.0.4 Crack

UniFab这是一个用于处理视频的新工具,可以帮助您像专业人士一样获得结果,事实上,它可以确保在项目的任何设备上完美播放,所以,来认识一下 UniFab - 一款功能强大且方便的视频编辑器和转换器,但另一方面&…

不同品牌的手机可以则哪一个你投屏到电视?

如果你使用AirDroid Cast的TV版,苹果手机可以通过airPlay或无线投屏方式,将屏幕同步到电视屏幕;多个品牌的安卓手机可以通过无线投屏投射到电视。而且无线投屏不限制距离,即使是远程投屏也可以实现。 打开AirDroid Cast的TV版&…

Day32| Leetcode 122. 买卖股票的最佳时机 II Leetcode 55. 跳跃游戏 Leetcode 45. 跳跃游戏 II

Leetcode 122. 买卖股票的最佳时机 II 题目链接 122 买卖股票的最佳时机 II 本题目设计的还是比较巧妙的,把最终的利润分为每天的利润就解决了(贪心),每天的利润就是前一天买进,后一天卖出,转化到代码上就…

AcWing 188:武士风度的牛 ← BFS

【题目来源】https://www.acwing.com/problem/content/190/ 【题目描述】 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法&…

【C++干货铺】优先队列 | 仿函数

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 优先队列(priority_queue )的介绍和使用 priority_queue的介绍 priority_queue的使用 大堆 小堆 priority_queue的模拟实现 仿…

03_MySQL基本SQL语句讲解

#课程目标 能够创建、删除数据表能够对表里的数据记录进行增加、删除、修改、查询操作能够创建、删除用户能够给用户授权并回收权限了解delete和truncate语句的区别 #一、数据库基本操作 ##1、查看数据库相关信息 mysql> show databases; 查看所有数据库 mysql>…

lv11 嵌入式开发 GPIO实验 9

目录 1 简介 1.1 GPIO 2 LED实验步骤 2.1 通过电路原理图分析LED的控制逻辑 2.2 通过电路原理图查找LED与Exynos4412的连接关系 2.3 通过数据手册分析GPIO中哪些寄存器可以控制LED 2.4 通过程序去操控对应的寄存器完成对LED的控制 2.4.1 使用寄存器写入…

***Ubuntu Linux配置方法

目录 1. 查看防火墙状态 2.先把ssh的权限打开 3.打开防火墙 4.添加规则 5.修复docker缺省打开防火墙问题 6.设置无法ping主机 1. 查看防火墙状态 进入root权限 ufw status verbose 状态:不活动 2.先把ssh的权限打开 这么做的目的是防止把自己关在外面了&am…

LeetCode46. Permutations

文章目录 一、题目二、题解 一、题目 Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1: Input: nums [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] Example …

PHP echo和print 语句

PHP 是通过 print 和 echo 语句来动态输出 HTML 内容,虽然 print 和 echo 语句两者的功能几乎是完全一样,但是还是有一点差别的。 在 PHP 中有两个基本的输出方式: echo 和 print。 本章节中我们会详细讨论两个语句的用法,并在实…

过渡曲线的构造之平面PH曲线

平面PH曲线的构造及其相应性质 平面PH曲线的构造及其相应性质PH曲线理论三次PH曲线的构造及性质四次PH曲线的构造及性质五次PH曲线的构造及性质非尖点五次PH曲线尖点五次PH曲线 参考文献 平面PH曲线的构造及其相应性质 过渡曲线常需要满足在连接点处位置连续、曲率连续以及切线…

Docker exec命令

docker exec :在运行的容器中执行命令。 语法: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS说明: -d:分离模式: 在后台运行 -i:即使没有附加也保持STDIN打开 -t:分配一个伪终…

韵达快递查询,韵达快递单号查询,一键筛选出单号中的退回件

批量查询韵达快递单号的物流信息,并将其中的退回件一键筛选出来。 所需工具: 一个【快递批量查询高手】软件 韵达快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的朋友记得先注册&#xff…

鸿蒙(HarmonyOS)应用开发——装饰器

简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用。TS是JavaScript(简称JS)的超…

MySQL 库操作 | 表操作

文章目录 一.MySQL库的操作1.创建数据库2.字符集和校验规则3.操纵数据库 二.MySQL表的操作1.创建表2.操作表3.删除表 一.MySQL库的操作 1.创建数据库 创建数据库 创建数据库的SQL如下: CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSETcharset_name…

Redis——使用lua脚本模糊删除数据

前言 本文适用于Redis集群,是否适用单机模式未做测试! 一、创建lua脚本: 命名为clear_data.lua redis.call("select",0)--游标的id local cursor 0 --查找删除的key的数量 local keyNum 0 repeat--使用scan搜索,c…

小程序和Vue写法的区别主要有什么不同

1.语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需要使用e.currentTarget.dataset.*的方式获取&…

一篇文章完成Hbase入门

文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…

C语言——猜凶手

题目: 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。…