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

Nginx的HTTPS配置

Nginx的HTTPS配置

1.使用openssl工具(生成自签名证书)

#安装
sudo yum install openssl -y
#创建证书存放目录
sudo mkdir -p /etc/nginx/ssl

2.生成私钥和证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt

#查看生成的2个证书
ls /etc/nginx

nginx.crt  nginx.key

openssl:使用 OpenSSL 工具,进行证书生成和管理。

req:表示生成证书请求(Certificate Signing Request,CSR)。

-x509:直接生成自签名证书,而不是 CSR。 是一种证书标准,常用于 SSL/TLS。

-nodes:不对私钥进行加密,不需要输入密码。如果加密私钥,每次 Nginx 启动时都需要手动输入密码,生产环境中不便管理。

-days 365:证书有效期为 365 天(1 年)。到期后需要重新生成或续签证书。

-newkey rsa:2048:生成一个新的私钥和证书请求。使用 RSA 算法,密钥长度为 2048 位。这是目前比较常见和安全的密钥长度。

-keyout /etc/nginx/ssl/nginx.key:指定生成的私钥文件保存路径。这里是 /etc/nginx/ssl/nginx.key

-out /etc/nginx/ssl/nginx.crt:指定生成的证书文件保存路径。这里是 /etc/nginx/ssl/nginx.crt

主要信息说明:
  • Country Name (2 letter code): 国家代码,如CN代表中国。
  • State or Province Name: 省份,如Beijing
  • Locality Name: 城市,如Beijing
  • Organization Name: 组织名称,可以填公司名或个人名。
  • Organizational Unit Name: 部门名称,如IT Department
  • Common Name (CN): 证书颁发者的名称,通常是域名或IP地址,比如localhost或服务器IP。
  • Email Address: 联系邮箱,可选填。

3.修改Nginx的配置文件

server {
    listen 80;
    server_name www.fjr.com;
    # 301 重定向 HTTP 到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.fjr.com;

    # SSL 证书和私钥路径
    ssl_certificate      /etc/nginx/ssl/nginx.crt;         ###重点
    ssl_certificate_key  /etc/nginx/ssl/nginx.key;         ####重点

    # 中间证书链文件
    ssl_trusted_certificate /etc/nginx/ssl/ca_bundle.crt;

    # SSL 会话缓存
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    # 协议配置(仅支持 TLS 1.2 和 TLS 1.3)
    ssl_protocols TLSv1.2 TLSv1.3;

    # 安全加密套件
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_prefer_server_ciphers on;

    # HTTP/2 和 HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # 访问日志
    access_log /var/log/nginx/ssl_access.log;
    error_log /var/log/nginx/ssl_error.log;

    # 网站根目录和首页
    root /usr/share/nginx/html;
    index index.html index.htm;

    # 基础路由
    location / {
        try_files $uri $uri/ =404;
    }
}

4.启动Nginx访问

nginx

#查看端口
[root@localhost ~]# netstat -antp |grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      80544/nginx: master 

#添加域名
[root@localhost ~]# cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.18 www.fjr.com


#访问
curl -vk https://www.fjr.com

* Rebuilt URL to: https://www.fjr.com/
*   Trying 192.168.200.18...
* TCP_NODELAY set
* Connected to www.fjr.com (192.168.200.18) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
。。。。。。。。。。。。。。

-vk:显示详细信息忽略 SSL 证书验证,允许连接到不受信任的或自签名证书的服务器。

相关文章:

  • 【论文笔记】Transformer
  • OpenCV专利收费免费模块介绍
  • QT二 QT使用generate form 生成常用UI,各种UI控件
  • Function Calling的核心机制与挑战
  • 【k8s】利用Kubernetes卷快照实现高效的备份和恢复
  • Three.js世界中的三要素:场景、相机、渲染器
  • 一个完整的小项目案例,涉及到项目的规划,模块的设计功能的衔接等。
  • tcpdump-快速查询版-常用后缀
  • 【sql靶场】第23、25,25a关过滤绕过保姆级教程
  • 蓝桥杯之AT24C02的页写页读
  • 【Spring 默认是否管理 Request 和 Session Bean 的生命周期?】
  • OpenCV 基础模块 Python 版
  • MySQL 设置允许远程连接完整指南:安全与效率并重
  • 小白闯AI:Llama模型Lora中文微调实战
  • k8s运维 设置Pod实现JVM内存根据容器内存动态调整
  • 车载以太网网络测试-20【传输层-DOIP协议-3】
  • OpenCV图像处理基础2
  • 内网穿透的应用-如何用Docker本地部署轻量级个人云盘ZFile手机电脑异地远程访问
  • 计算属性set方法没被执行的原因
  • React如何导入md5,把密码password进行md5加密
  • 四部门:到2025年底,全国行政村5G通达率超过90%
  • 检疫期缩减至30天!香港优化内地进口猫狗检疫安排
  • 支持企业增强战略敏捷更好发展,上海市领导密集走访外贸外资企业
  • 高适配算力、行业大模型与智能体平台重塑工业城市
  • 甘肃:今年6月前,由县级党委、政府制定农村彩礼倡导性标准
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世界贸易组织在全球经济治理中发挥更大作用