Nginx内网环境开启https

文章目录

  • 前言
  • 一、open-ssl
    • 1. 验证
    • 2. 安装
    • 3.生成ssl证书
  • 一、nginx
    • 1. 验证支持模块
    • 2. 安装必要模块
      • 2.1 重新编译nginx
      • 2.2 替换原文件
    • 3. 配置https
  • 总结


前言

nginx开启https前提:

  1. 服务器支持open-ssl
  2. nginx 包含--with-http_ssl_module --with-stream --with-stream_ssl_preread_module模块

一、open-ssl

1. 验证

openssl version

2. 安装

  1. 下载openssl安装包openssl安装包
  2. 安装openssl
 mkdir /usr/local/sslcd /usr/local/ssl# 解压tar -xf openssl-3.0.1.tar.gz# 设置SSL库文件路径./config --prefix=/usr/local/ssl/makemake install
vi /etc/ld.so.conf
# 最后一行添加/usr/local/ssl/ 路径
sudo ldconfig 

常见报错:openssl: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
系统版本和openssl版本不一致,具体哪里的日志记录需要的版本忘记了

3.生成ssl证书

# 第一步:生成私钥
mkdir /etc/ssl/certs/www.abc.com
cd /etc/ssl/certs/www.abc.com
openssl genrsa -des3 -out server.key 2048
# 输入一个4位以上的密码
# 确认密码
#第二步:生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=JiLin/L=ChangChun/O=gsafety/OU=gsafety/CN=www.abc.com"
#第三步:去除私钥中的密码
#在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次启动Web服务器时,都会要求输入密码
#这显然非常不方便。要删除私钥中的密码,操作如下:
openssl rsa -in server.key -out server.key
#第四步:生成自签名SSL证书
# -days 证书有效期-天
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

一、nginx

1. 验证支持模块

nginx -V

2. 安装必要模块

可以参考我之前的博客 Nginx 平滑升级

2.1 重新编译nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre --with-http_gzip_static_module --with-stream --with-stream_ssl_preread_module

生成nginx二进制执行文件到当前目录

 make upgrade

2.2 替换原文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp /usr/local/nginx-1.13.3/objs/nginx /usr/local/nginx/sbin/
#验证模块是否加载成功
nginx -V

3. 配置https

下面是一段双协议支持的配置代码
请允许我抄袭一下小左同学的代码

stream {upstream http_protocol {# 8991端口是一个开启http的端口server 127.0.0.1:8991;}upstream https_protocol {# 10002端口是一个开启https的端口server 127.0.0.1:10002;}# 根据不同的协议走不同的upstreammap $ssl_preread_protocol $upstream {default http_protocol;"TLSv1.0" https_protocol;"TLSv1.1" https_protocol;"TLSv1.2" https_protocol;"TLSv1.3" https_protocol;}server {listen 8990;ssl_preread on;proxy_pass $upstream;}
}
  server {listen 10002 ssl;server_name www.gsafety.com;ssl_certificate /etc/ssl/certs/www.abc.com/server.crt;ssl_certificate_key /etc/ssl/certs/www.abc.com/server.key;#减少点击劫持#add_header X-Frame-Options DENY;add_header X-Frame-Options AllowAll;#禁止服务器自动解析资源类型add_header X-Content-Type-Options nosniff;#防XSS攻击add_header X-Xss-Protection 1;#优先采取服务器算法ssl_prefer_server_ciphers on;#协议ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;location / {proxy_pass http://127.0.0.1:8991/;}}

在这里插入图片描述

总结

openssl: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
这个问题是很大的难点,排查好久才找到一个对应版本安装成功(我的是麒麟银河V10,版本OpenSSL 1.1.1f),关键是怎么找到对应版本的过程当时没有记录,现在也想不起来了,😫


在这里插入图片描述

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

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

相关文章

浏览器不兼容 replaceAll 方法问题解决

问题 在一些较旧版本的浏览器中可能会出现 replaceAll 方法不兼容,提示replaceAll 方法 undefined 的问题。浏览器版本兼容情况如下图所示: 解决 可以通过 replace 正则表达式 的方法来代替 replaceAll 方法: let str "我是一段文本…

下载npm I就包错解决方案

npm i xxxx -S --legacy-peer-deps 如果包错就执行以上命令

文本分类的深度注意图扩散网络 笔记

1 Title Deep Attention Diffusion Graph Neural Networks for Text Classification(Yonghao Liu、Renchu Guan、Fausto Giunchiglia、Yanchun Liang、Xiaoyue Feng)【EMnlp 2021】 2 Conclusion Text classification is a fundamental task with broad…

永嘉原厂8×16点阵数码管驱动抗干扰数码管驱动IC防干扰数显芯片VK1640 SOP28

产品型号:VK1640 产品品牌:永嘉微电/VINKA 封装形式:SOP28 原厂,工程服务,技术支持! 概述 VK1640是一种数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED 驱动等电路。SEG脚接LE…

用友U8与旺店通的对接案例分析

在现代企业管理中,财务管理和电商运营管理是企业数字化转型的两个重要组成部分。用友U8作为企业的财务管理系统,与旺店通这一电商ERP系统的结合,可以为企业带来全面的数据整合和流程自动化。本文将通过轻易云集成平台的视角,分析用…

苹果手机系统恢复工具:轻松解决iPhone各类系统问题!

随着苹果手机的iOS系统不断升级,越来越多的系统问题不断出现,如卡在恢复模式、系统崩溃白苹果、应用无响应、等,这些问题不仅影响用户体验,还可能导致手机无法正常使用。 遇到系统问题,一般我们可以先尝试使用强制重启…

ARM架构安全特性之隔离技术

安全之安全(security)博客目录导读 目录 一、保护代码和数据 二、TrustZone 三、安全世界之间的隔离 四、Secure-EL2扩展 五、保护主流计算工作负载 六、领域管理扩展(RME) 七、内存密集型可信应用程序 八、Arm动态TrustZone技术 强制执行明确定义的安全边界是安全工程…

绝地求生PUBG初版艾伦格回归 初版艾伦格和新版有什么区别

PUBG终于迎来了经典的旧版艾伦格地图的回归!我们希望通过本次经典艾伦格的回归为大家带回记忆中那一幕幕熟悉的场景,并让大家好好回味一番当年与好友们共同冒险的峥嵘岁月!还怀念从前为了抢到自己最爱的武器而飞奔的日日夜夜吗?那…

CCF-GESP青少年编程考级报名流程及照片要求的处理方法

随着编程教育的普及,越来越多的青少年开始接触并学习编程。中国计算机学会(CCF)推出的GESP(Grade Examination of Software Programming)认证,为青少年提供了一个专业的编程能力认证平台。以下是关于GESP认…

有了这玩意,分分钟开发公众号功能!

大家好,我是程序员鱼皮。 不论在企业、毕设还是个人练手项目中,很多同学或多或少都会涉及微信相关生态的开发,例如微信支付、开放平台、公众号等等。 一般情况下,我们需要到官网查阅这些模块对应的 API 接口,自己编写…

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

Cocos 2048从创建到发布上线

一、制作2048小游戏过程 扫描体验2048小游戏 场景搭建,4X4棋盘和基础设置绘制背景板,包含预制体等信息考虑在棋盘中随机出现两个数字方块,数字为2,初始化操作滑动事件部分,让方块移动起来,每滑动一次就生成…

猫头虎分享已解决Bug | java.util.concurrent.CancellationException异常的正确解决方法

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

化学式的分子量计算——字符转数字

【题目描述】 给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,…

英伟达解码性能NVDEC

如果你能打开官网,请看这里: NVDEC Application Note 下面是摘录:

Mac安装jadx

1、使用命令brew安装 : brew install jadx 输入完命令,等待安装完毕 备注(关于Homebrew ): Homebrew 是 MacOS 下的包管理工具,类似 apt-get/apt 之于 Linux,yum 之于 CentOS。如果一款软件发布时支持了 homebrew 安…

巴奴火锅翻车,杜中兵后悔暗讽海底捞

曾经喊出“服务不过度,样样都讲究”、内涵海底捞的巴奴火锅,又改回了2012年的广告语,试图重回“产品主义”。 巴奴火锅于2001年创立于河南安阳,彼时被视作火锅界的黑马。巴奴火锅创始人的杜中兵,坚信“产品主义”一定…

UART中的DMA数据处理过程

一、DMA简介 DMA (Direct Memory Access) ,直接内存存储器,使用它在做数据传输时能够大大减轻CPU的负担。 DMA,全称 Direct Memory Access,即直接存储器访问。用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。D…

从3D模型到渲染:完整的流程指南---模大狮模型网

在当今数字化时代,3D模型和渲染技术在各个领域中扮演着至关重要的角色,从影视制作到建筑设计,从游戏开发到工程模拟。了解如何将3D模型转化为逼真的渲染图像是数字创意领域从业者的关键技能之一。本文将为您介绍从3D模型到渲染的完整流程&…

【机器学习】人力资源管理的新篇章:AI驱动的高效与智能化

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…