学习Nginx(十四):配置SSL/TLS支持HTTPS

概念

  1. SSL/TLS:安全套接字层(SSL)及其继任者传输层安全性(TLS)是为网络通信提供安全及数据完整性的一种安全协议。它们通过在应用程序协议(如HTTP)与TCP/IP协议族之间提供数据加密封面,来为客户端和服务器之间的通信提供加密。
  2. 证书:由证书颁发机构(CA)签发的电子文件,用于验证服务器或客户端的身份。证书包含公钥、颁发者、有效期等信息。
  3. 密钥:在SSL/TLS通信中,有两种主要类型的密钥:公钥和私钥。私钥用于对数据进行加密和对由公钥加密的数据进行解密,而公钥则用于对数据进行解密和对由私钥加密的数据进行加密。
  4. 证书链验证:客户端验证服务器证书的有效性时,会沿着证书链从服务器的证书开始,一直验证到受信任的根证书颁发机构(CA)。这确保服务器证书是由受信任的CA签发的,并且没有被篡改。
  5. 会话恢复:在SSL/TLS通信中,会话恢复是一种优化性能的技术,它允许客户端和服务器在重新建立连接时重用先前的会话参数(如密钥和加密算法),从而减少了握手过程所需的时间和资源。

SSL证书

  • 若在生产环境中使用,请从SSL证书供应商处获取。
  • 本次测试使用自行创建SSL证书。
# 安装工具,默认情况下是已安装。
[root@RockyLinux9 ~]# dnf install -y openssl
[root@RockyLinux9 ~]# cd /usr/local/nginx/conf/


# 创建自签名证书
[root@RockyLinux9 conf]# openssl req -x509 -newkey rsa:2048 -keyout linuxjsz.com.key -out linuxjsz.com.crt -nodes -days 365
[root@RockyLinux9 conf]# ls linuxjsz.com.*
linuxjsz.com.crt  linuxjsz.com.key

检查nginx

  • 确认已经安装和配置了nginx。
  • 检查安装模块,包含 --with-http_ssl_module 。
[root@RockyLinux9 conf]# nginx -V

配置nginx

  • 修改配置文件
[root@RockyLinux9 conf]# vim nginx.conf
# 启用http块中的HTTPS server段
http {


    ...
    
    # HTTPS server
    server {
        listen       443 ssl;
        server_name  linuxjsz.com;
        
        # 配置证书路径
        ssl_certificate      /usr/local/nginx/conf/linuxjsz.com.crt;
        ssl_certificate_key  /usr/local/nginx/conf/linuxjsz.com.key;


        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;


        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;


        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}
  • 加载配置文件
[root@RockyLinux9 conf]# nginx -s reload
  • 访问Web

配置80端口自动跳转443

  • 修改配置文件
[root@RockyLinux9 conf]# vim nginx.conf
http {


    server {
        listen       80;
        server_name  linuxjsz.com;
        # 添加如下语句
        return 301 https://$host$request_uri;
  }
    
    # HTTPS server
  ...
}
  • 加载配置文件
[root@RockyLinux9 conf]# nginx -s reload
  • 此时访问http://linuxjsz.com会自动跳转到https://linuxjsz.com页面。

SSL常用配置参数

  • ssl_buffer_size
    • 描述:设置 SSL 读/写缓冲区的大小。
# 语法
ssl_buffer_size size;
# 默认值
ssl_buffer_size 16k;
  • ssl_certificate
    • 描述:指定 SSL 证书文件的位置。
# 语法
ssl_certificate file;
# 示例
ssl_certificate     example.com.rsa.crt;
  • ssl_certificate_key
    • 描述:指定 SSL 私钥文件的位置。
# 语法
ssl_certificate_key file;
# 示例
ssl_certificate_key example.com.rsa.key;
  • ssl_ciphers
    • 描述:指定启用的加密套件列表。也可以自定义列表以满足特定的安全需求。
# 语法
ssl_ciphers ciphers;
# 默认值
ssl_ciphers HIGH:!aNULL:!MD5;
  • ssl_protocols
    • 描述:指定启用的 SSL/TLS 协议版本。
# 语法
  ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
# 默认值
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  • ssl_prefer_server_ciphers
    • 描述:设置为 on,则使用服务器提供的加密套件优先于客户端提供的,以增强安全性。
# 语法
ssl_prefer_server_ciphers on | off;
# 示例
ssl_prefer_server_ciphers off;
  • ssl_session_cache
    • 描述:指定 SSL 会话缓存的类型、大小和时间。
# 语法
ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
# 默认值
ssl_session_cache none;
# 示例
ssl_session_cache shared:SSL:10m;
  • ssl_dhparam
    • 描述:指定 DH(Diffie-Hellman)参数文件的路径。
# 语法
ssl_dhparam file;
# 默认值
ssl_dhparam /path/to/dhparam.pem;
  • ssl_session_timeout
    • 描述:指定客户端可以重新使用 SSL 会话参数的时间长度。
# 语法
ssl_session_timeout time;
# 默认值
ssl_session_timeout 5m;

了解更多,请访问官方说明:

http://nginx.org/en/docs/http/ngx_http_ssl_module.html

分享、在看与点赞
👇只要你点,我们就是胖友👇

来自: 学习Nginx(十四):配置SSL/TLS支持HTTPSicon-default.png?t=N7T8https://mp.weixin.qq.com/s/CNcqRAVWYyb6YnQ6iGW3nQ

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Three.js 研究:1、如何让物体动起来

1、制作模型动画 2、模型动画在代码中的调用 使用这个例子进行修改,使他能动作webgl_animation_skinning_morph.html 制作好的模型放到如下路径 /three.js-master/examples/models/gltf/无标题.gltf修改加载模型文件的地址 修改动画名称 运行 点击动画后&…

Python TinyDB库:轻量级NoSQL数据库的终极指南

更多Python学习内容:ipengtao.com TinyDB是一个轻量级的NoSQL数据库,适用于需要嵌入式数据库的小型项目。它使用JSON文件存储数据,并提供了简单易用的API,支持多种查询和索引操作。TinyDB非常适合那些不需要复杂数据库功能的小型应…

子比主题ACG美化插件[全开源]

WordPress插件是一种可以扩展和增强WordPress网站功能的应用程序。子比主题ACG美化插件听起来像是一个专门为ACG(动画、漫画、游戏)爱好者设计的美化插件,它可能包含多种功能来改善网站的外观和用户体验。 内置功能开关100意味着这个插件提供…

【Spring】SpringMVC基本概念

1、介绍 1.1简介 Spring MVC 是 Spring Framework 中的一个模块,它基于 Java 实现了 Web MVC 设计模式,用于构建 Web 应用程序。Spring MVC 提供了清晰的职责划分,使得开发者能够更加简洁和直观地开发 Web 层。 1.2优点 松耦合&#xff1a…

专业的ADAS测试记录仪ETHOS 2

随着ADAS驾驶辅助系统技术的快速发展及日臻成熟,近年来ADAS在全球汽车市场已开始快速普及和商业化,而如何确保ADAS系统的可靠和安全俨然成为汽车领域的重要问题。因此,ADAS驾驶辅助系统的测试也成为了各大整车厂及零部件厂商所关注的焦点。 一…

蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现

0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…

轻松拿捏C语言——二分查找

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注💕 目录🎉 一、介绍🌈 二、步骤🌙 三、代码☀️ 一、介绍 二分查找是一种在有序数组中…

小程序丨公告栏功能,自动弹出提醒

发布查询时,您是否遇到这样的困扰: 1、查询发布时间未到,学生进入查询主页后发现未发布任何查询,不断咨询原因。 2、有些重要事项需要进入查询主页就进行强提醒,确保人人可见,用户需要反馈“我知道了”才…

Day48 Javascript详解

Day48 Javascript详解 文章目录 Day48 Javascript详解一、什么是javascript二、javascript特点三、 Javascript的历史四、Javascript vs Java五、JS的基本数据类型六、JS基本数据类型的特殊点七、数组 一、什么是javascript JavaScript是一种高级的、解释型的编程语言&#xf…

ST-SLAS Technology 实验室自动化与筛查学会技术

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、出版支持 一、期刊简介 SLAS Technology ——SLAS技术强调促进和改进生命科学研发的科学和技术进步;药物递送;诊断;生物医学和分子成像;以及个性化和精准医疗。这包括高通量和其他实验室自动化技术;…

eclipse配置JDK和Tomcat

eclipse配置JDK jdk配置 配置JDK: 首先,确保JDK已经安装并配置了环境变量。这包括设置JAVA_HOME环境变量,指向JDK的安装目录,以及更新CLASSPATH和PATH环境变量以包含JDK的bin目录。 在Eclipse中,通过Window > Pre…

EFuzz:基于程序环境的通用模糊测试工具

关于EFuzz EFuzz是一款功能强大的模糊测试工具,该工具支持基于程序运行环境来执行模糊测试,广大安全研究人员可以使用该工具对几乎任何程序组件执行安全模糊测试。 该工具在运行之后,会将所有的环境交互信息(包括用户输入数据&am…

Linux —— 信号量

Linux —— 信号量 什么是信号量P操作(Wait操作)V操作(Signal操作)信号量的类型 一些接口POSIX 信号量接口:其他相关命令: 基于循环队列的生产者和消费者模型同步关系 多生产多消费 我们今天接着来学习信号…

软考--软件设计师-刷题总结

一、数据结构 贪心算法 归并排序将问题先分解、再处理、再合并的方式采用了分治法的思想 分治法:将一个大问题分成若干个小问题 希尔排序: 定义一个 i 变量指向这一组的第二个数据,定义一个 j 变量指向 i - gap 的位置。 将 i 下标的值放到…

使用python不改变格式的情况下批量替换word里面的内容

需要使用如$name,${id}这样的模板 import os import io from python_docx_replace import docx_replace,docx_get_keys from docx import Document from random import randrange student_list1,张三,2202330301 2,李四,2202330302 3,王五,2202330303 review["思路清晰、…

产品数据特性驱动设计

一、什么是数据特性 一个产品在宏观的视角下,是不同功能模块的有机组合;在微观的视角上,是千丝万缕的数据连接。 基于模块化设计思想,对产品进行业务化梳理,对业务进行模块化拆分出功能模块,功能模块就是产品的“逻辑”,而功能中的数据就是“特性”。 业务:比较固定…

防范TOCTOU竞态条件攻击

防范TOCTOU竞态条件攻击 在软件开发过程中,我们常常会遇到需要在使用资源之前检查其状态的情况。然而,如果资源的状态在检查和使用之间发生了变化,那么检查的结果可能会失效,导致软件在资源处于非正常状态时执行无效操作。这种时…

如何提升百度小程序的收录?百度小程序如何做优化?

​ 如何通过百度小程序获得更多的自然流量?这是做百度小程序肯定要考虑的问题,做百度小程序的目的就是想借助百度生态,做相应的关键词给自己的小程序引流,如何把流量给做起来呢,接下来我从不同的方面给大家进行分析讲解…

[牛客网]——C语言刷题day5

答案:D 解析:因为两个指针都指向的字符串常量,不能被重新赋值,*p*q是错误的 在C语言中,赋值语句的返回值都是所赋的值,所以才会有连续赋值的语句,例如ab10,因此,这里的i…

Github 2024-05-25 Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Svelte项目1TypeScript项目1Python项目1Go项目1Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust…