当前位置: 首页 > 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替换成证书绑定的域名。

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

http://www.lryc.cn/news/547165.html

相关文章:

  • 【基础4】插入排序
  • 2安卓开发的主要语言
  • Python练习(握手问题,进制转换,日期问题,位运算,求和)
  • vtk 3D坐标标尺应用 3D 刻度尺
  • 蓝桥杯每日一题:第一周周四哞叫时间
  • DeepSeek本地接口调用(Ollama)
  • 自由学习记录(41)
  • 【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​
  • 大模型如何协助知识图谱进行实体关系之间的分析
  • 推荐几款优秀的PDF转电子画册的软件
  • 【大模型技术】LlamaFactory 的原理解析与应用
  • Golang依赖注入实战:从容器管理到应用实践
  • Node.js二:第一个Node.js应用
  • 【Python爬虫】利用代理IP爬取跨境电商AI选品分析
  • 生命周期总结(uni-app、vue2、vue3生命周期讲解)
  • 计算机数据库三级刷题总结(博主89分已过,总结的内容分享)
  • mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀
  • AI是否能真正理解人类情感?从语音助手到情感机器人
  • 3.3.2 Proteus第一个仿真图
  • JetBrains学生申请
  • 深入探索WebGL:解锁网页3D图形的无限可能
  • SQL进阶技巧:上课时长计算
  • “沂路畅通”便利服务平台:赋能同城物流,构建高效畅通的货运生态
  • 文件上传靶场(1--9关)
  • 嵌入式 ARM Linux 系统构成(1):Bootloader层
  • ArcGIS Pro 基于基站数据生成基站扇区地图
  • GaussianCity:实时生成城市级数字孪生基底的技术突破
  • 【个人学习总结】反悔贪心:反悔堆+反悔自动机
  • 通往 AI 之路:Python 机器学习入门-线性代数
  • 迷你世界脚本UI五子棋小游戏