Nginx系列-9 Nginx配置HTTPS

1.nginx编译

#下载资源
wget http://nginx.org/download/nginx-1.26.0.tar.gz# 解压资源
tar -zxvf nginx-1.26.0.tar.gz# 编译nginx
cd nginx-1.26.0/
./configure  --prefix=/usr/local/ewen/nginx --with-http_ssl_module
./make# 安装nginx
./make install

其中,--with-http_ssl_module表示编译时引入ssl模块。

2.生成私钥和制作证书

对SSL不熟悉的同学可以参考:TLS/SSL协议介绍。这里进行简单描述:消息在公网上传输需要进行加密,以保证信息的安全性。加密有对称加密和非对称加密两种;对称加密使用同一个秘钥进行加密和解密;非对称加密使用一对秘钥进行加解密。对称加密相对于非对称加密速度快、效率高。
在HTTPS握手过程,服务端会将证书(公钥和CA信息)发送给客户端;客户端使用CA信息验证证书的合法性,然后随机生成一个秘钥,并使用证书中携带的公钥对该生成的秘钥加密,然后发送给服务端;服务端使用私钥进行解密,得到秘钥;之后,双方使用这个对称加密的秘钥进行信息的加解密。
因此,需要服务端需要准备一个证书和一个私钥

[1] 生成私钥

# 生成私钥:生成一个2048 位的 RSA 私钥,保存为server.key文件
openssl genrsa -out server.key 2048  

[2] 生成csr文件

# 生成证书:基于server.key私钥生成一个新的证书保存为server.csr文件
openssl req -new -key server.key -out server.csr 

生成过程要求交互式地输入国/省/市/组织,姓名/邮件等信息,如下所示:

[root@localhost 2024]# openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Jiangsu
Locality Name (eg, city) [Default City]:NanJing
Organization Name (eg, company) [Default Company Ltd]:testOrg
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:Ewen
Email Address []:shengyu@buaa.edu.cnPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

[3] 使用私钥和CSR生成自签名证书

# 使用私钥和CSR生成自签名证书  
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

X.509是一种广泛使用的公钥证书格式, -days 365设置证书的有效期为365天。
至此,得到两个文件:server.crt证书文件和server.key私钥。

3.配置

可以配置在http块(对整个http块生效)或者server块,配置方式如下:

# 证书文件路径
ssl_certificate      ./cert/server.crt;# 私钥文件路径
ssl_certificate_key  ./cert/server.key;

http_ssl_module模块还提供一些其他配置参数,用于定义SSL握手的细节:
[1] ssl_session_cache
定义缓存大小,用于存放会话信息, 如加密秘钥等,

# 使用一个名为SSL的共享缓存,其大小为1MB
ssl_session_cache   shared:SSL:1m;

[2] ssl_session_timeout
定义会话的超时时间: 在这个时间内,如果客户端重新连接到服务器且会话ID不变,可以通过缓存中恢复会话,则不需要经过SSL握手;

# 设置SSL会话的过期时间为10分钟
ssl_session_timeout  10m;    

说明: SSL会话被创建后,如果在这10分钟内没有任何活动,那么该会话将被视为过期,并且后续的连接会进行完整的SSL握手过程。

[3] ssl_protocols
指定了Nginx服务器支持的SSL/TLS协议版本。

说明: TLSv1和TLSv1.1已经被认为是不安全的SSL/TLS协议版本

#支持TLSv1.2和TLSv1.3版本的SSL/TLS协议
ssl_protocols TLSv1.2 TLSv1.3;

[4] ssl_ciphers
指定了Nginx服务器在SSL/TLS握手过程中将使用的密码套件列表。

# 这是一个强密码套件, 包括ECDHE密钥交换、RSA签名、AES-128-GCM加密算法和SHA-256哈希算
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!aNULL:!MD5;  

[5] ssl_prefer_server_ciphers
指定了在SSL/TLS握手过程中,Nginx服务器是否优先使用服务器配置的密码套件列表,而不是客户端支持的密码套件列表。

#这有助于确保使用更强的加密算法和协议版本,而不是客户端可能支持的较旧或较弱的选项。 
ssl_prefer_server_ciphers on;  

此时,如果有些客户端不支持服务器指定的加密算法,则客户端会连接失败。所以ssl_prefer_server_ciphers是否设置为on,需要结合业务场景在安全性和兼容性方面做选择。

4.案例介绍

修改nginx.conf配置文件:

http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {# 监听端口后添加ssl表示https端口listen       8443 ssl;server_name  localhost;#相对于conf文件夹路径ssl_certificate  cert/server.crt;ssl_certificate_key  cert/server.key;location /query {proxy_pass http://localhost:8000/ask;}}server {listen       8000;server_name  localhost;location /ask {return 200 "from 8002/ask";}}
}

测试结果如下所示:

[root@124 conf]# curl -k https://localhost:8443/query
from 8002/ask[root@124 conf]#

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

完全移动huggingface模型仓库(不是简单mv)

Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置: export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…

速腾聚创激光雷达复现FAST-LIO

目录 1.软件环境 2.测试执行 3.代码学习 3.1.找主节点代码文件 3.2.整体流程结构 3.3.具体函数理解 记录复现FAST-LIO算法的过程和,代码梳理和理解 1.软件环境 Windows 10(64bits) VMware 16 Pro Ubuntu 20.04 ROS Noetic FAST-LIO的简化版、注释版。感谢…

Hospital 14.6.0全开源医院管理预约系统源码

InfyHMS 具有 60 种功能和 9 种不同类型的用户类型, 他们可以登录系统并根据他们的角色访问他们的数据。 源码下载:https://download.csdn.net/download/m0_66047725/89580674 更多资源下载:关注我。

Top-down Microarchitecture Analysis Method

1、英文链接: 1. https://www.intel.com/content/www/us/en/docs/vtune-profiler/cookbook/2023-0/top-down-microarchitecture-analysis-method.html 2. http://portal.nacad.ufrj.br/online/intel/vtune2017/help/GUID-02271361-CCD4-410C-8338-4B8158157EB6.ht…

LC61----1374. 生成每种字符都是奇数个的字符串(字符串)---java版

1.题目 2.思路 (1)题目要生成每种字符是奇数个的字符串。 (2)所以直接用参数n%2来判断。 (3)返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 (4)感觉题目不是很规范哈…

go程序在windows服务中优雅开启和关闭

本篇主要是讲述一个go程序,如何在windows服务中优雅开启和关闭,废话不多说,开搞!!!   使用方式:go程序 net服务启动 Ⅰ 开篇不利 Windows go进程编译后,为一个.exe文件,直接执行即…

知名医药医疗行业人工智能数字化转型讲师培训师唐兴通谈医药医疗销售与创新思维创新管理数字化AI及大客户销售医美生活美容品牌市场

​唐兴通 数字化商业创新顾问、数字化转型教练、沃顿商学院演讲嘉宾。全球商业思想大家EM罗杰斯(创新的扩散)、杰弗里摩尔(跨越鸿沟)、马修狄克逊(挑战式销售)、布兰登博格(竞合战略&#xff0…

css渐变色背景|<gradient

使用渐变色作为背景 可以直接将渐变色用作元素的背景&#xff0c;可以看做是一种特殊的背景图片。&#xff08;是作为背景background一个属性值不是背景颜色background-color的属性值 &#xff09; CSS 渐变是一种从一种颜色平滑过渡到另一种颜色的效果&#xff0c;由 <gra…

Java数据结构(四)——链表

文章目录 链表概念及结构单链表的实现LinkedList的使用构造方法遍历 LinkedList的模拟实现ArrayList与LinkedList区别链表的相关练习反转链表链表的中间结点链表的回文结构判断链表是否有环寻找入环的第一个结点 链表 概念及结构 链表是一种物理存储结构上非连续存储结构&…

【C语言】 二叉树创建(结构体,先序遍历,中序遍历,后续遍历)

二叉树的创建&#xff1a;首先先定义一个结构体&#xff0c;里面包含数据&#xff08;data&#xff09;&#xff0c;指向左子树的指针&#xff08;L&#xff09;&#xff0c;指向右子树的指针&#xff08;R&#xff09;三个部分 在创建树的函数中&#xff0c;首先先输入…

netty使用redis发布订阅实现消息推送

netty使用redis发布订阅实现消息推送 场景 项目中需要给用户推送消息: 接口 RestController public class PushApi {Autowiredprivate PushService pushService;/*** 消息推送* param query* return*/PostMapping("/push/message")public String push(RequestBody…

『 Linux 』信号的写入与保存

文章目录 信号的发送信号的保存sigset_t 类型与信号集操作函数阻塞信号集(信号屏蔽字)操作函数未决信号集操作函数验证阻塞信号集与未决信号集 信号的发送 $ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10)…

EXCEL自动公式计算始终为0

如果你的数据单元格的左上角存在绿色的三角小箭头&#xff0c;那么就会造成这种问题&#xff1a; 你的数字是以文本形式存入的单元格 解决办法&#xff1a; 选中数据列&#xff0c;数据->分列 直接选择完成 此时就可以进行公式计算了

Linux作业---dns服务器的搭建

1.先在/www下创建一个net.haha的文件&#xff0c;然后在net.haha下的vim编辑index.html写入想写的内容 [rootrhcsa redhat]# cat /www/net.haha/index.html this is 192.168.127.11 server 2.继续在/etc/nginx/conf.d/baidu.conf下编辑web配置 [rootrhcsa redhat]# cat /etc…

Mem0 - 个人 AI 的内存层

文章目录 一、关于 Mem0核心功能&#x1f511;路线图 &#x1f5fa;️常见用例Mem0与RAG有何不同&#xff1f; 二、快速入门 &#x1f680;1、安装2、基本用法&#xff08;开源&#xff09;3、高级用法&#x1f527;4、大模型支持 三、MultiOn1、概览2、设置和配置4、将记忆添加…

javaScrip的学习(一)

目录 引言 一、java和JavaScript的联系 二、js中的弹出框 1.alert弹出框 2.confirm带确认取消的按钮弹框 3.prompt带有提示信息且带有输入框的弹框 4.输出到网页中 ​三、js引入方式 1. 放在script标签中 2.放在外部js文件中 四、执行顺序 五、书写规范 1. 语句结…

暑期C++ printf和scanf的平替

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 C中也有专门的输入和输出的方法 首先我们需要一个头文件&#xff0c;也就是#include<iostream> 然后根据我们命名空间的知识可知这个地方如果我们要使用必须先展开 可以全部展开比如using namespa…

算法——二分查找(day9)

704.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题其实用暴力其实很简单&#xff0c;挨个对比就完事了~ 但我们可以利用其升序的特性对其进行优化&#xff1a; 随机选择一个数&#xff08;5&#xff09;&#xff0c;发现比目标…

38.综合练习:评委打分

需求&#xff1a;有6位评委打分&#xff0c;分数范围[0&#xff0c;100]&#xff0c;去掉一个最高分和最低分之后&#xff0c;剩下4个评委的平均分就是最终得分 import java.util.Scanner;public class 评委打分 {public static void main(String[] args) {int[] arr new int…

给Windows系统中注入服务,即windwos守护进程

最近总是在windwos环境下测试nginx&#xff0c;总是需要频繁重启nginx服务。于是考虑有没有可能把nginx加入到系统服务的操作。在网上找了一大堆资料&#xff0c;现在来总结一下&#xff01; 方法1&#xff1a;利用nssm工具实现 这是一个守护进程的软件&#xff0c;可以在win…