当前位置: 首页 > news >正文

Nginx或Tengine服务器配置SSL证书

本文将全面介绍如何在Nginx或Tengine服务器配置SSL证书,具体包括下载和上传证书文件,在Nginx上配置证书文件、证书链和证书密钥等参数,以及安装证书后结果的验证。成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问Nginx服务器。

本文以CentOS 8.0 64位操作系统、Nginx 1.14.2为例介绍。不同版本的操作系统或Web服务器,部署操作会有所差异。

前提条件

  • 已通过数字证书管理服务控制台签发证书。

  • SSL证书绑定的域名已完成DNS解析,即您的域名已正确映射到主机IP地址。您可以通过控制台常用证书工具中的DNS生效验证,检测域名DNS解析是否生效。

  • 已在Web服务器开放443端口(HTTPS通信的标准端口)。

    • 请确保在防火墙或安全组中开启TCP 443端口。

  • 如果待部署SSL证书的网站计划部署在中国内地,则您需要按照工信部的相关要求完成ICP备案,否则将影响网站的正常访问。

步骤一:下载SSL证书(以阿里云为例)

  1. 登录数字证书管理服务控制台。

  2. 在左侧导航栏,选择证书管理 > SSL证书管理

  3. SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。

  4. 服务器类型为Nginx的操作列,单击下载

  5. 解压缩已下载的SSL证书压缩包。

    根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。

CSR生成方式

证书压缩包包含的文件

系统生成选择已有的CSR

  1. 证书文件(PEM格式):Nginx支持安装PEM格式的文件,PEM格式的证书文件是采用Base64编码的文本文件,且包含完整证书链。解压后,该文件以证书ID_证书绑定域名命名。

  2. 私钥文件(KEY格式):默认以证书绑定域名命名。

手动填写

  • 如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。

  • 如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。

步骤二:在Nginx服务器安装证书

1. 执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。

cd /usr/local/nginx/conf  #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。
mkdir cert  #创建证书目录,命名为cert。

2. 将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)。

您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTY、Xshell或WinSCP等。

3. 编辑Nginx配置文件nginx.conf,修改与证书相关的配置。

a. 执行以下命令,打开配置文件。

vim /usr/local/nginx/conf/nginx.conf

nginx.conf默认保存在/usr/local/nginx/conf目录下。如果您修改过nginx.conf的位置,可以执行nginx -t,查看nginx的配置文件路径,并将/usr/local/nginx/conf/nginx.conf进行替换。

b. 在nginx.conf中定位到HTTPS server属性配置。

如果确定nginx.conf或include指令所引用的文件不存在上图server块,请您自行手动进行添加。

c. 删除行首注释符号#,并参考如下示例进行修改。

server {#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen 443 ssl;#填写证书绑定的域名server_name <YOURDOMAIN>;#填写证书文件绝对路径ssl_certificate cert/<cert-file-name>.pem;#填写证书私钥文件绝对路径ssl_certificate_key cert/<cert-file-name>.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#表示优先使用服务端加密套件。默认开启ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}
}

 d. 可选:设置HTTP请求自动跳转到HTTPS。

如果您希望所有的HTTP访问自动跳转到HTTPS页面,可通过rewrite指令重定向到HTTPS。

请在nginx.conf文件中定位到http server的配置代码块,新增配置重定向的代码;

如果找不到上述代码段,可以将以下代码片段放置在nginx.conf文件中server {}代码段后面,即设置HTTP请求自动跳转到HTTPS后,nginx.conf文件中会存在两个server {}代码段。

server {listen 80;#填写证书绑定的域名server_name <YOURDOMAIN>;#将所有HTTP请求通过rewrite指令重定向到HTTPS。rewrite ^(.*)$ https://$host$1;location / {index index.html index.htm;}
}

 配置效果如下图所示:

4. 执行以下命令,重启Nginx服务

#进入Nginx服务的可执行目录。
cd /usr/local/nginx/sbin
#重新载入配置文件。
./nginx -s reload
  • 报错the "ssl" parameter requires ngx_http_ssl_module:您需要重新编译Nginx并在编译安装的时候加上--with-http_ssl_module配置。

  • 报错"/cert/3970497_demo.aliyundoc.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_demo.aliyundoc.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file):您需要去掉证书相对路径最前面的/。例如,您需要去掉/cert/cert-file-name.pem最前面的/,使用正确的相对路径cert/cert-file-name.pem

步骤三:验证SSL证书是否配置成功

证书安装完成后,您可通过访问证书绑定的域名验证该证书是否安装成功。

https://yourdomain.cn   #需要将yourdomain.cn替换成证书绑定的域名。

如果网页地址栏出现小锁标志,表示证书已经安装成功。

相关文章:

Nginx或Tengine服务器配置SSL证书

本文将全面介绍如何在Nginx或Tengine服务器配置SSL证书&#xff0c;具体包括下载和上传证书文件&#xff0c;在Nginx上配置证书文件、证书链和证书密钥等参数&#xff0c;以及安装证书后结果的验证。成功配置SSL证书后&#xff0c;您将能够通过HTTPS加密通道安全访问Nginx服务器…...

【基础4】插入排序

核心思想 插入排序是一种基于元素比较的原地排序算法&#xff0c;其核心思想是将数组分为“已排序”和“未排序”两部分&#xff0c;逐个将未排序元素插入到已排序部分的正确位置。 例如扑克牌在理牌的时候&#xff0c;一般会将大小王、2、A、花牌等按大小顺序插入到左边&…...

2安卓开发的主要语言

1. Kotlin&#xff08;官方首选语言&#xff09; 定位&#xff1a;Google 官方推荐的首选 Android 开发语言&#xff08;2019 年起&#xff09;。 优势&#xff1a; 简洁高效&#xff1a;语法糖减少样板代码&#xff08;如 data class 自动生成 equals()/hashCode()&#xff0…...

Python练习(握手问题,进制转换,日期问题,位运算,求和)

一. 握手问题 代码实现 ans0for i in range(1,51):for j in range(i1,51):if i<7 and j<7:continueelse:ans 1print(ans) 这道题可以看成是50个人都握了手减去7个人没握手的次数 答案&#xff1a;1204 二.将十进制整数拆解 2.1门牌制作 代码实现 ans0for i in ra…...

vtk 3D坐标标尺应用 3D 刻度尺

2d刻度尺 : vtk 2D 刻度尺 2D 比例尺-CSDN博客 简介&#xff1a; 3D 刻度尺&#xff0c;也是常用功能&#xff0c;功能强大 3D 刻度尺 CubeAxesActor vtkCubeAxes调整坐标轴的刻度、原点和显示效果&#xff0c;包括关闭小标尺、固定坐标轴原点&#xff0c;以及设置FlyMode模…...

蓝桥杯每日一题:第一周周四哞叫时间

蓝桥杯每日一题&#xff1a;第一周周四哞叫时间 疑惑&#xff1a;如何把复杂度控制在Q&#xff08;n&#xff09;&#xff0c;怎么枚举a和b&#xff0c;longlong的形式又该怎么输入&#xff08;考虑用string&#xff09; 思路&#xff1a;枚举倒数第二个b前面有多少个a 这是一…...

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…...

自由学习记录(41)

代理服务器的核心功能是在客户端&#xff08;用户设备&#xff09;和目标服务器&#xff08;网站/资源服务器&#xff09;之间充当“中介”&#xff0c;具体过程如下&#xff1a; 代理服务器的工作流程 当客户端希望访问某个网站&#xff08;比如 example.com&#xff09;时&…...

【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 方法一 有源码的…...

大模型如何协助知识图谱进行实体关系之间的分析

大模型在知识图谱中协助进行实体关系分析的方式主要体现在以下几个方面&#xff1a; 增强数据标注与知识抽取 大模型通过强大的自然语言处理能力&#xff0c;能够高效地对原始数据进行实体、关系和事件的标注&#xff0c;从而提高数据处理的效率和准确性。例如&#xff0c;Deep…...

推荐几款优秀的PDF转电子画册的软件

当然可以&#xff01;以下是几款优秀的PDF转电子画册的软件推荐&#xff0c;内容简洁易懂&#xff0c;这些软件都具有易用性和互动性&#xff0c;适合不同需求的用户使用。​ ❶ FLBOOK&#xff5c;在线创作平台 支持PDF直接导入生成仿真翻页电子书。提供15主题模板与字体库&a…...

【大模型技术】LlamaFactory 的原理解析与应用

LlamaFactory 是一个基于 LLaMA 系列模型&#xff08;如 LLaMA、LLaMA2、Vicuna 等&#xff09;的开源框架&#xff0c;旨在帮助开发者和研究人员快速实现大语言模型&#xff08;LLM, Large Language Model&#xff09;的微调、推理和部署。它提供了一套完整的工具链&#xff0…...

Golang依赖注入实战:从容器管理到应用实践

#作者&#xff1a;曹付江 文章目录 1、示例&#xff1a; 管理依赖关系的容器1.1. 日志记录器设置1.2. 数据库连接设置1.3. 管理依赖关系的容器 2、如何使用容器3、结论 依赖注入&#xff08;DI&#xff09;是一种在软件应用程序中促进松散耦合和可测试性的设计模式。它允许将依…...

Node.js二:第一个Node.js应用

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 创建的时候我们需要用到VS code编写代码 我们先了解下 Node.js 应用是由哪几部分组成的&#xff1a; 1.引入 required 模块&#xff1a;我们可以使用 requi…...

【Python爬虫】利用代理IP爬取跨境电商AI选品分析

引言 随着DeepSeek的流行&#xff0c;越来越多的用户开始尝试将AI工具融入到日常工作当中&#xff0c;借助AI的强大功能提高工作效率。最近又掀起了一波企业出海的小高潮&#xff0c;那么如果是做跨境电商业务&#xff0c;怎么将AI融入工作流中呢&#xff1f;在做跨境电商的时候…...

生命周期总结(uni-app、vue2、vue3生命周期讲解)

一、vue2生命周期 Vue2 的生命周期钩子函数分为 4 个阶段&#xff1a;创建、挂载、更新、销毁。 1. 创建阶段 beforeCreate&#xff1a;实例初始化之后&#xff0c;数据观测和事件配置之前。 created&#xff1a;实例创建完成&#xff0c;数据观测和事件配置已完成&#xff0c…...

计算机数据库三级刷题总结(博主89分已过,总结的内容分享)

计算机数据库三级刷题总结&#xff08;博主89分已过&#xff0c;总结的内容分享&#xff09; 文章目录 计算机数据库三级刷题总结&#xff08;博主89分已过&#xff0c;总结的内容分享&#xff09;一、 数据库设计阶段二、事务相关三、数据库设计顺序四、数据库三级模式与二层映…...

mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀

在使用Windows操作系统运行某些软件时&#xff0c;不少用户会遇到令人头疼的mfc140u.dll文件丢失错误。mfc140u.dll这个错误一旦出现&#xff0c;往往导致相关程序无法正常启动或运行&#xff0c;给用户带来诸多不便。这天的这篇文章将给大家分析mfc140u.dll是什么&#xff1f;…...

AI是否能真正理解人类情感?从语音助手到情感机器人

引言&#xff1a;AI与情感的交集 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;的发展速度令人惊叹&#xff0c;从简单的语音识别到如今的深度学习和情感计算&#xff0c;AI已经深入到我们生活的方方面面。尤其是在语音助手和情感机器人领域&#xff0c;AI不…...

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍&#xff1a;使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径&#xff0c;之后一直点“下一步”直到完成 2 添加元器件 点击元…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...