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

nginx中配置https详解:配置SSL/TLS证书

文章目录

  • 前言
  • 一、准备工作:安装 Nginx
    • 1.1 安装 EPEL 仓库
    • 1.2 安装 Nginx
    • 1.3 启动并设置 Nginx 开机启动
    • 1.4 检查 Nginx 是否正常运行
  • 二、获取 SSL/TLS 证书
    • 2.1 使用 Let's Encrypt 证书(推荐)
      • 2.1.1 安装 Certbot
      • 2.1.2 获取 SSL 证书
      • 2.1.3 配置自动续期
    • 2.2 创建自签名证书(仅用于测试)
      • 2.2.1 生成自签名证书
      • 2.2.2验证是否生成成功
  • 三、配置 Nginx 启用 SSL/TLS
    • 3.1 编辑 Nginx 配置文件
    • 3.2 配置 SSL 证书路径
    • 3.3 配置 HTTP 到 HTTPS 重定向
    • 3.4 配置 HTTP/2(可选)
  • 四、强化 SSL/TLS 安全性
    • 4.1 禁用弱加密协议
    • 4.2 启用 HTTP Strict Transport Security (HSTS)
    • 4.3 启用更强的 Diffie-Hellman 参数
    • 4.4 配置加密套件
  • 五、验证配置
    • 5.1 检查 Nginx 配置
    • 5.2 重启 Nginx
    • 5.3 测试 HTTPS 配置
  • 总结


前言

在当今互联网环境中,网站安全性至关重要。SSL/TLS 协议为网站提供了加密通信的能力,保护用户数据免受窃听和篡改。本文将详细介绍如何在 Nginx 服务器上配置 SSL/TLS 证书,包括获取证书、配置 Nginx、强化安全性等完整流程。无论您是使用 Let’s Encrypt 的免费证书还是自签名证书,都能在本指南中找到对应的配置方法。

一、准备工作:安装 Nginx

1.1 安装 EPEL 仓库

sudo yum install epel-release -y

1.2 安装 Nginx

sudo yum install nginx -y

1.3 启动并设置 Nginx 开机启动

sudo systemctl start nginx
sudo systemctl enable nginx

1.4 检查 Nginx 是否正常运行

访问 http://your_server_ip,你应该能看到 Nginx 的默认欢迎页面。如果没有,使用以下命令检查 Nginx 状态:

sudo systemctl status nginx

二、获取 SSL/TLS 证书

SSL/TLS 证书是启用 HTTPS 加密连接所必需的。我们可以使用免费的 Let’s Encrypt 证书,也可以选择使用 自签名证书

2.1 使用 Let’s Encrypt 证书(推荐)

2.1.1 安装 Certbot

sudo yum install epel-release -y
sudo yum install certbot python2-certbot-nginx -y

2.1.2 获取 SSL 证书

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

2.1.3 配置自动续期

sudo crontab -e

添加以下行:

0 0 * * * /usr/bin/certbot renew --quiet

2.2 创建自签名证书(仅用于测试)

2.2.1 生成自签名证书

mkdir -p /usr/local/nginx/ssl/private
#证书私钥文件夹
mkdir -p /usr/local/nginx/ssl/certs
#证书请求文件夹openssl genpkey -algorithm RSA -out /usr/local/nginx/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048
#-algorithm指定证书算法 SRA
#-out 指定输出目录
#-pkeyopt 指定秘钥长度,2048标准安全
openssl req -new -key /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.csr
#req -new 生成一个新的证书请求
#-key /usr/local/nginx/ssl/private/nginx-selfsigned.key 请求一个私钥
#-out /usr/local/nginx/ssl/certs/nginx-selfsigned.csr 输出到证书请求文件
openssl x509 -req -days 365 -in /usr/local/nginx/ssl/certs/nginx-selfsigned.csr -signkey /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.crt
#x509标准证书
#-req -days 365 -in  /usr/local/nginx/ssl/certs/nginx-selfsigned.csr生成一个新的证书请求365天的
#-signkey  /usr/local/nginx/ssl/private/nginx-selfsigned.key指向私钥地址
#-out  /usr/local/nginx/ssl/certs/nginx-selfsigned.crt指向证书地址
==================================证书签发对话=====================================其他字段说明(一般在用 openssl req -new -key ... 生成 CSR 时会问)Country Name (2 letter code): 国家代码(必须 2 位,例如 CN、US)State or Province Name: 省/州全名,例如 ZhejiangLocality Name: 城市,例如 HangzhouOrganization Name: 公司或组织名,例如 MyCompany LtdOrganizational Unit Name: 部门名,例如 IT Department(可留空)Common Name (e.g. server FQDN): 你的域名,例如 example.comEmail Address: 邮箱地址,例如 admin@example.com

2.2.2验证是否生成成功

证书应该已经保存在 /usr/local/nginx/ssl/certs/nginx-selfsigned.crt(自签名证书),密钥文件保存在 /usr/local/nginx/ssl/private/nginx-selfsigned.key`(私钥文件)。在nginx去配置引导这两个文件

在企业中,一般获得域名后,域名都会自带证书,所以实际上直接将证书和私钥配置在nginx中即可。

三、配置 Nginx 启用 SSL/TLS

3.1 编辑 Nginx 配置文件

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

3.2 配置 SSL 证书路径

server {listen 443 ssl;server_name look.com www.look.com;ssl_certificate /usr/local/nginx/ssl/certs/nginx-selfsigned.crt;#指定密钥路径ssl_certificate_key /usr/local/nginx/ssl/private/nginx-selfsigned.key;#指定证书路径ssl_protocols TLSv1.2 TLSv1.3;#证书版本ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;#定义加密套件。可以根据安全需求选择合适的加密方法。#openssl版本低的解决方法#一、修改为ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;#二、升级openssl版本ssl_prefer_server_ciphers on; #强制服务器优先选择加密套件。location / {root /usr/share/nginx/html;index index.html;}
}

在这里插入图片描述

3.3 配置 HTTP 到 HTTPS 重定向

这将使得访问 HTTP(端口 80)的请求自动重定向到 HTTPS。

server {listen 80;server_name benet.com www.benet.com;return 301 https://$host$request_uri;
}

在这里插入图片描述

3.4 配置 HTTP/2(可选)

server {listen 443 ssl http2;...
}

四、强化 SSL/TLS 安全性

为了提升 SSL/TLS 配置的安全性,我们可以实施一些最佳实践。

4.1 禁用弱加密协议

推荐仅启用 TLS 1.2 和 TLS 1.3,禁用所有过时的协议,如 SSLv3 和 TLS 1.0/1.1。

ssl_protocols TLSv1.2 TLSv1.3;

4.2 启用 HTTP Strict Transport Security (HSTS)

HSTS 强制浏览器只能通过 HTTPS 访问网站。以下配置将设置最长为一年(31536000 秒)的 HSTS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

4.3 启用更强的 Diffie-Hellman 参数

为了确保安全,使用一个更强的 Diffie-Hellman 参数。生成一个 2048 位的 DH 参数文件:

sudo openssl dhparam -out /usr/local/nginx/ssl/certs/dhparam.pem 2048

然后在 Nginx 配置中引用它:

ssl_dhparam /usr/local/nginx/ssl/certs/dhparam.pem;

4.4 配置加密套件

配置一个现代、安全的加密套件,并禁用已知的弱加密算法。例如:

ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

五、验证配置

5.1 检查 Nginx 配置

sudo nginx -t

5.2 重启 Nginx

sudo systemctl restart nginx

5.3 测试 HTTPS 配置

使用浏览器访问 https://benet.com,或使用命令:

curl -I https://look.com

在这里插入图片描述


总结

通过本文的详细步骤,您已经学会了如何在 Nginx 服务器上配置 SSL/TLS 证书。无论是使用 Let’s Encrypt 的免费证书还是自签名证书,都能为您的网站提供安全的 HTTPS 连接。同时,通过强化 SSL/TLS 配置,可以进一步提升网站的安全性。定期检查和更新证书是确保网站持续安全运行的重要环节。希望本指南能帮助您顺利完成 Nginx 的 SSL/TLS 配置工作。


文章转载自:

http://gt3LgDQj.LwtLd.cn
http://AQ5LjrCs.LwtLd.cn
http://GtIcr89s.LwtLd.cn
http://UELcA4Kz.LwtLd.cn
http://wEBJXn9B.LwtLd.cn
http://rRoTaW3M.LwtLd.cn
http://BGItHdgq.LwtLd.cn
http://QFelm1Ka.LwtLd.cn
http://XUU29K0N.LwtLd.cn
http://dKQySOKK.LwtLd.cn
http://Csbce7lF.LwtLd.cn
http://ZzkrLSLJ.LwtLd.cn
http://JlOdo7Qg.LwtLd.cn
http://de3D2Gct.LwtLd.cn
http://6gdBpvab.LwtLd.cn
http://m4xGpQaC.LwtLd.cn
http://q3E0CfWr.LwtLd.cn
http://gnrGfXAq.LwtLd.cn
http://h1UyF4lH.LwtLd.cn
http://eizCOZuS.LwtLd.cn
http://q2QIHMSm.LwtLd.cn
http://XKqROtXI.LwtLd.cn
http://PCh2V5kS.LwtLd.cn
http://cROcgjw6.LwtLd.cn
http://FOJSODHc.LwtLd.cn
http://FyO2vCyq.LwtLd.cn
http://t5imLo2Z.LwtLd.cn
http://0OAbWlSD.LwtLd.cn
http://WWRxKoka.LwtLd.cn
http://XkWqejSI.LwtLd.cn
http://www.dtcms.com/a/377205.html

相关文章:

  • Spark中Shuffle阶段的优化方法
  • LeetCode100-234回文链表
  • Docker 学习笔记(六):多容器管理与集群部署实践
  • 【AI论文】借助大型语言模型进行符号图形编程
  • 深入理解Java中的位运算
  • Docker 部署生产环境可用的 MySQL 主从架构
  • 设计模式-工厂方法原型模板方法外观
  • John the Ripper jumbo + HashCat 破解压缩密码 ubuntu amd GPU
  • 笔记 | ubuntu20.04离线安装Docker
  • 4.1.多线程JUC-什么是多线程?
  • 硅基计划4.0 算法 模拟
  • Android调用系统内置的UiAutomator工具实现自动化测试
  • vim 编辑器
  • RAG原理是什么?
  • 小白必看:AI智能体零基础搭建全攻略!
  • 品牌方与服务商布局 GEO 优化:差异化优势与商业价值落地路径​
  • 高防IP如何抵御CC攻击?2025年全面防护机制解析
  • Memory in LLM Agent
  • WebAssembly (WASM) 简介
  • Vue: 列表渲染 (v-for)
  • Python NumPy安装、导入与入门
  • Linux ip 命令使用指南
  • 【科研知识】常用细胞增殖检测方法
  • 微算法科技(NASDAQ: MLGO)基于阿基米德优化算法(AOA)的区块链存储优化方案
  • 国产双复旦微VU9P+ZYNQ7100-6U VPX板卡
  • 装备制造专用CRM销售系统推荐(8款)
  • 模块一 入门微服务
  • 安卓、Windows、macOS 应用开发技术栈与跨平台方案深度解析
  • 网页防篡改技术:原理、应用与安全保障
  • 热门资产管理软件有哪些?