nginx--基于openssl自颁发SSL证书实现HTTPS协议安全访问网站

学习背景

  • 大家在nginx安装(nginx安装教程)后,启动nginx,访问静态页面时,一般都是直接通过HTTP协议进行访问页面,如下图所示:
    在这里插入图片描述

  • 但实际应用中,有很多网站基于安全方面上的考虑,都有自己的SSL证书,基于HTTPS协议进行访问,例如:
    在这里插入图片描述

  • 这篇文章主要是介绍基于openssl生成自颁发证书实现HTTPS协议访问,进入正文之前,先来复习一下,HTTPHTTPS的区别吧

  • HTTP全称Hypertext Transfer Proctocol超文本传输协议,是计算机世界里专门在两点之间传输数据的约定和规范,主要分为HypertextTransferProctocol三部分

    • Hypertext:超文本,两点之间传送的数据,不单单只是本文,它还可以传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转
    • Transfer:传输就是数据需要经过一系列的物理介质从一个端系统传送到另外一个端系统的过程。通常我们把传输数据包的一方称为请求方,把接到二进制数据包的一方称为应答方
    • Proctocol:协议指的就是网络中传递、管理信息的一些规范,如同人与人之间相互交流通过语言、肢体动作等规范完成,计算机也需要遵循相应的规则,这些规则称为协议,如TCP/IP网络模型中,网络层基于IP协议、传输层基于TCP/UDP协议、应用层基于HTTP/FTP/Telnet协议等
      *HTTP是不安全的协议,未经过任何加密,传输过程容易被攻击者监听、数据容易被窃取、发送方和接收方容易被伪造
    • HTTP默认端口HTTP是80
  • HTTPS并非新协议,相比于HTTP只是多了个S,表示Secure安全

    • 安全的原理是基于HTTP+TCL/SSL协议组合实现的,所以HTTP和HTTPS的主要区别本质在于TCL/SSL安全协议上的区别
    • HTTPS是一种安全的协议,通过密钥交换算法 - 签名算法 - 对称加密算法 - 摘要算法确保安全
    • HTTPS默认443端口

进入正文~

一、SSL证书生成

1.1 检查环境

  • 登录Linux服务器,本文使用示例用户nginx,检查openssl是否安装
openssl version

在这里插入图片描述
1.2 规划目录

  • 创建自颁发证书存放路径
mkdir -p /home/nginx/certificate/
  • 18
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
要基于 OpenSSL 实现安全的 Web 服务器,需要遵循以下步骤: 1. 安装 OpenSSL 库 首先,需要在服务器上安装 OpenSSL 库。如果你使用 Linux 操作系统,可以使用包管理器来安装它。例如,在 Ubuntu 系统上,可以执行以下命令来安装: ``` sudo apt-get update sudo apt-get install openssl ``` 2. 创建 SSL 证书 为了启用 HTTPS,需要为服务器生成 SSL 证书。可以使用 OpenSSL 工具来生成自签名证书,或者可以购买证书来获得由受信任的第三方颁发证书。 以下是使用 OpenSSL 生成自签名证书的示例命令: ``` openssl req -x509 -newkey rsa:2048 -nodes -keyout example.key -out example.crt -days 365 ``` 这将生成一个有效期为 365 天的自签名证书。请注意,在生产环境中,应使用由受信任的第三方颁发证书。 3. 编写 Web 服务器代码 接下来,需要编写 Web 服务器代码,以便它能够与 SSL 证书一起运行。可以使用任何编程语言和 Web 框架来实现。 以下是一个使用 Python 和 Flask 框架实现的简单示例: ``` from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello, World!" if __name__ == "__main__": context = ('example.crt', 'example.key') app.run(host='0.0.0.0', port=443, ssl_context=context) ``` 这个简单的应用程序将在 HTTPS 端口上运行,使用前面创建的 SSL 证书来进行加密通信。 4. 部署 Web 服务器 最后,需要将 Web 服务器部署到生产环境中。可以使用任何 Web 服务器软件,例如 Apache 或 Nginx,来代理 SSL/TLS 流量到应用程序。 以下是使用 Nginx 作为反向代理的示例配置: ``` server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/example.crt; ssl_certificate_key /path/to/example.key; location / { proxy_pass http://localhost:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这个配置将代理所有 HTTPS 流量到 Flask 应用程序运行的本地端口,并使用前面创建的 SSL 证书进行加密通信。 通过这些步骤,就可以基于 OpenSSL 实现安全的 Web 服务器。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾日三省贾斯汀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值