基于OpenSSL和nginx搭建本地https服务器(详细实操版)

这篇具有很好参考价值的文章主要介绍了基于OpenSSL和nginx搭建本地https服务器(详细实操版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • (꒪ꇴ꒪ ),Hello我是祐言QAQ
  • 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
  • 快上🚘,一起学习,让我们成为一个强大的攻城狮!
  • 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏

目录

一、介绍

1. SSL简介

2. Nginx简介

二、OpenSSL 下载与安装

三、OpenSSL自建服务端证书请求

​编辑1. 生成服务端私钥

​编辑2. 由私钥生成待签名证书

四、OpenSSL自建CA根证书

1. 创建私钥

2. 生成CA待签名证书

3. 创建自签名的根证书

4. OpenSSL生成服务端证书

五、在Nginx中配置证书

1. 安装 Nginx

2. 启动 Nginx 服务

3. Nginx中配置证书文件

4. 重启Nginx

5. 验证搭建https服务器是否可行

📢写在最后


一、介绍

        本文将对SSL、Nginx和OpenSSL自建CA根证书的介绍非常全面,适用于想要学习搭建安全Web服务器的读者哈。

1. SSL简介

        SSL(安全套接层)是一种用于在计算机网络上保护信息安全的协议。SSL 最初由网景公司开发,后来演变为 TLS(传输层安全),但人们仍然普遍使用术语 SSL 来指代这种安全协议。

        SSL/TLS 的主要目标是通过加密通信内容,确保数据在客户端和服务器之间的传输过程中不被窃听或篡改。它使用公钥和私钥体系,对数据进行加密和解密,以确保通信的机密性和完整性。        

        SSL/TLS 的工作流程通常包括以下步骤:

  1. 握手阶段(Handshake): 客户端向服务器发送一个“客户端hello”消息,服务器回应一个“服务器hello”消息。在握手过程中,双方协商加密算法和密钥。

  2. 认证阶段: 服务器通常需要提供数字证书,以便客户端验证其身份。这有助于确保客户端正在与预期的服务器通信,而不是遭到中间人攻击。

  3. 密钥交换阶段: 在握手期间,客户端和服务器协商共享密钥,用于加密和解密数据。这确保了通信的保密性。

  4. 加密通信: 握手成功完成后,客户端和服务器使用共享密钥对通信进行加密。这使得即使有人能够截获通信,也无法轻松解密其中的内容。

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        SSL/TLS 在 Web 安全中起着关键作用,尤其是在保护网站上的敏感信息,如登录凭据和信用卡数据方面。最新的 TLS 版本不断改进安全性,并强调抵御不同类型的攻击。

2. Nginx简介

        Nginx是一个轻量级、高性能的开源Web服务器,由Igor Sysoev创建,并于2004年首次发布。它以其卓越的性能、低资源消耗以及高度可扩展性而闻名。

        以下是Nginx的一些关键特点和用途:

  1. 高性能: Nginx设计的目标之一是处理高并发连接,它采用异步事件驱动的架构,可以有效地处理大量并发请求而不会导致性能下降。

  2. 低内存消耗: 相对于一些传统的Web服务器,Nginx使用较少的内存来处理相同数量的请求,这使得它在资源受限的环境中表现出色。

  3. 反向代理: Nginx可以作为反向代理服务器,将客户端的请求转发给后端服务器。这对于负载均衡、提高安全性以及实现更灵活的架构都非常有用。

  4. 负载均衡: 作为反向代理的一部分,Nginx可以分配流量到多个服务器,以确保请求在各个服务器之间均衡分布,提高系统的稳定性和性能。

  5. 静态文件服务: Nginx非常擅长提供静态文件服务。它能够快速地传送静态内容,减轻动态应用服务器的负担。

  6. 模块化设计: Nginx的模块化设计使得用户可以根据需要灵活配置和扩展功能,例如SSL支持、gzip压缩等。

        总体而言,Nginx是一个强大而灵活的工具,适用于构建高性能、可扩展和稳定的Web服务器环境。

二、OpenSSL 下载与安装

        OpenSSL是一个开源的加密和安全套接字层工具包,它实现了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议。它提供了一系列用于处理安全通信的函数和工具。我们用到它的功能主要是自签证书来自建https服务器
       你可以从官方网站(https://www.openssl.org/)下载并安装适合你操作系统的版本。我这里下载的是v1.1.1版本,步骤如下:

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        下载好之后按照提示安装即可,这里就不再演示了。

三、OpenSSL自建服务端证书请求


        打开Windows命令行终端(Win+r然后cmd),进入OpenSSL目录中的bin目录,然后自建一下存储证书的地址,我这里建的是 C:/openssl

1. 生成服务端私钥

        后续几步也都是通过openssl.exe可执行文件来进行操作。

openssl.exe genrsa -des3 -out c:/openssl/server.key 2048

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

         该过程中要输入密码,记住它,执行完成后,我们看到目录中生成了server.key。

2. 由私钥生成待签名证书


        这里利用上一步生成的server.key生成待签名证书,即证书生成请求.CSR文件。中间需要输入在第一步中设置的密码,然后填写证书请求信息。

openssl.exe req -new -key c:/openssl/server.key -out c:/openssl/pub.csr

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        注意:这里的信息根据你自己情况如实填写或者填过都可以

四、OpenSSL自建CA根证书

        创建 OpenSSL 自建 CA(Certificate Authority) 根证书是确保安全通信的关键步骤。

1. 创建私钥

        使用以下命令生成CA的私钥。这个私钥将用于签署其他证书。

openssl.exe genrsa -out c:/openssl/ca.key 2048

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

2. 生成CA待签名证书

openssl.exe req -new -key c:/openssl/ca.key -out c:/openssl/ca.csr

 基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议        执行完成后,输出目录会出现ca.csr文件。

3. 创建自签名的根证书

        使用私钥生成自签名的根证书。

openssl.exe x509 -req -in c:/openssl/ca.csr -extensions v3_ca -signkey c:/openssl/ca.key -out c:/openssl/ca.crt

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        执行完成后,输出目录中生成ca.crt文件。

4. OpenSSL生成服务端证书

openssl.exe x509 -days 365 -req -in c:/openssl/pub.csr -extensions v3_req -CAkey c:/openssl/ca.key -CAcreateserial -out c:/openssl/server.crt -CA c:/openssl/ca.crt

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议        执行完成后,输出目录中生成了server.crt证书文件,到此证书就制作完毕了

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        现在,已经成功创建了一个自建的CA根证书。记得妥善保管私钥,因为它对于签署其他证书是关键的。在实际应用中,你可以使用这个CA根证书来签署其他实体(服务器、客户端)的证书,建立安全的通信。

五、在Nginx中配置证书

        在 CentOS 7 中使用 Nginx 的过程可以分为以下步骤(其他地方大致操作一致,Ubuntu中使用apt下载即可),包括安装 Nginx、配置站点等。以下是一个基本的流程:

1. 安装 Nginx

        使用 yum 包管理器安装 Nginx。

sudo yum install nginx

2. 启动 Nginx 服务

        安装完成后,启动 Nginx 服务:

sudo systemctl start nginx

        你也可以将 Nginx 设置为开机自启动:

sudo systemctl enable nginx

        但是一般在 CentOS 7 中root权限下直接这样即可启动,前提是你在/usr/sbin目录中,其他地方的话加上该目录就行。

nginx -s reload 
nginx 

3. Nginx中配置证书文件

        (1)上传server.crt 和 server.key 到docker容器。

docker cp 目标文件 目标容器名:/root/

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        (2)证书地址记一下,后续配置nginx.conf文件时要使用(pwd打印)。

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

       (3) 然后进入nginx工作目录。

cd /etc/nginx

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        (4)vim 编辑器进入nginx.conf。

vim nginx.conf

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

在nginx.conf中找到server并编辑如下内容:

   server {
        listen    443 ssl;   #端口号(必须433 ssl)
        server_name  x86docker.com;   #可随意

        ssl_certificate      /root/opensslserver/server.crt;  #证书对应地址
        ssl_certificate_key  /root/opensslserver/server.key;  #key地址
        location / {

            alias html/;      #路径(需要https服务器提供下载服务的路径)
            autoindex on;     #下载权限(开)
        }

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

4. 重启Nginx

         一般在 CentOS 7 中root权限下直接这样即可启动,前提是你在/usr/sbin目录中,其他地方的话加上该目录就行。

nginx -s reload 
nginx 

      基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        这里其实输入PEM密码的形式会在某些系统下不支持,因此我们还需将其修改为无密码模式最好,如遇到则可(使用 cat 命令)从日志/var/log/nginx/error.log中显示密码错误,将其修改为无密码格式:

openssl rsa -in /root/opensslserver/server.key -out /root/opensslserver/server_nopass.key

        然后把/root/opensslserver/server_nopass.key替换到nginx.conf 中即可(替换后记得重新加载nginx)。

5. 验证搭建https服务器是否可行

        在本地安装证书(Windows下)打开openssl然后右键点击ca.crt。

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        等待完成后将 CentOS 7 docker容器内的hosts中的设置为本机地址和server_name(我这里是想从libreoffice中下载的文件,因此我的地址该地址,你可根据具体需求更换,如果是自建Web把自己的写上去即可)

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

        这时候应该就可以去对https服务器进行一个访问了,如果有报错的话可以根据提示信息检查一下对应的那一步是否操作正确,不报403或者5开头错误就是可以了。 

基于OpenSSL和nginx搭建本地https服务器(详细实操版),软件配置,玩转Linux,网络,服务器,运维,https,nginx,网络协议

六、总结

        本文向读者介绍了SSL、Nginx和OpenSSL自建CA根证书的重要概念和实践步骤。

        在SSL的部分,详细阐述了SSL的起源、演进到TLS的过程,并强调SSL/TLS在Web安全中的关键作用。对Nginx的介绍包含了该服务器的关键特点和广泛应用领域,为读者提供了对Nginx的基本了解。

        在OpenSSL自建CA根证书的步骤中,以实际操作为例,逐步指导读者生成服务端私钥、待签名证书和自签名的根证书,以创建安全通信的基础。

        最后,通过在CentOS 7中配置Nginx,演示了如何将生成的证书应用于实际的Web服务器,使读者能够亲身体验搭建安全通信环境的过程。

        这篇博客是我学习过程的一个记录,也是我与读者分享知识和经验的平台。如果读者在实践中遇到问题,欢迎在评论区指正,共同学习进步。

        更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

   手撕C语言

            玩转linux

                    脚踢数据结构

                            系统、网络编程

                                     探索C++

                                             6818(ARM)开发板实战文章来源地址https://www.toymoban.com/news/detail-831202.html

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉🎉🎉感谢关注🎉🎉🎉

到了这里,关于基于OpenSSL和nginx搭建本地https服务器(详细实操版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「内网穿透」

    FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「内网穿透」

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考

    2024年02月05日
    浏览(16)
  • FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」(1)

    FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」(1)

    大家好,我是晓星航。今天为大家带来的是 FastDFS+Nginx 的讲解!😀 转载自cpolar极点云的文章:FastDFS与Nginx结合搭建文件服务器,并内网穿透实现公网访问 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、

    2024年02月04日
    浏览(12)
  • Nginx可视化管理工具和Cpolar在本地搭建服务器【内网穿透】

    Nginx可视化管理工具和Cpolar在本地搭建服务器【内网穿透】

    介绍在Linux 安装Nginx Proxy Manager并且结合 cpolar内网穿透工具实现远程访问管理界面,同等,当我们使用Nginx Proxy Manager配置其他本地服务 输入命令,docker 一键启动: 运行后,输入docker ps 即可看到运行的容器,命令挂载了三个端口,80 和 443 端口是访问服务的端口,81 端口是Nginx Proxy Ma

    2024年02月08日
    浏览(8)
  • Linux -- 进阶 Web服务器 搭建基于 https 协议的静态网站 ( 预备知识 )

    Linux -- 进阶 Web服务器 搭建基于 https 协议的静态网站 ( 预备知识 )

                什么是 HTTPS ?   HTTPS  协议背景 ?         ===                  HTTP 协议  即  超文本传输协议 ,                 它出生的很早,在早期,网络服务的相关攻击呢,或者病毒啥的几乎没有,安全类的问                  题也是少之又少。   

    2024年02月06日
    浏览(7)
  • Linux -- 进阶 Web服务器 搭建基于 HTTPS 协议的静态网站 (实验实操)

    Linux -- 进阶 Web服务器 搭建基于 HTTPS 协议的静态网站 (实验实操)

                  现在我们想架设一个 互联网网站的话,我们就得想法认证自己是官方的,得产生一个证书         这个证书呢,我们使用的是 X.509  格式的证书                                该证书 包含三个文件 :  key , csr , crt 。           先介绍下 :  PKI(

    2024年02月07日
    浏览(7)
  • Win10使用OpenSSL生成证书的详细步骤(NodeJS Https服务器源码)

    远程开启硬件权限,会用到SSL证书。 以下是Win10系统下用OpenSSL生成测试用证书的步骤。 Step 1 . 下载OpenSSL,一般选择64位的MSI Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions     一路点下来,如果后续请你捐款,可以不选择。 win10下很可能的安装路径为: C:Program FilesO

    2024年02月01日
    浏览(9)
  • Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

    Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

    #!/bin/sh HTTP_FLV_MODULE_PATH=…/nginx-http-flv-module-1.2.7 OpenSSL_PATH=…/openssl-1.1.1d #–prefix=./bin 代表编译完成之后输出的路径地址 #–add-module 将拓展模块添加到当前一起编译 ./configure --prefix=./bin –add-module= H T T P F L V M O D U L E P A T H   − − w i t h − o p e n s s l = HTTP_FLV_MODULE_PATH --with

    2024年04月15日
    浏览(16)
  • 基于javacv(推流),nginx(流媒体服务器),VCL(播放器)搭建直播视频

    基于javacv(推流),nginx(流媒体服务器),VCL(播放器)搭建直播视频

    目录 1.获取RTSP地址 2.搭建流媒体服务器 2.1下载资源 下载nginx  下载rtmp组件  启动nginx 测试工具(由于java代码调试问题,所以这里先下载一个转码推流的工具,其中javacv的原理也是它)可忽略  下载VLC(测试视频是否成功)  2.2测试向流媒体服务器推流 3.转码  4.查看监控数

    2024年02月06日
    浏览(13)
  • 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功

    2024年02月02日
    浏览(8)
  • Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务。前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用。 首先我们要知道一般nginx不能直接配置rtmp服务,在Windows系统上需要特殊nginx版本才能进行搭建 : nginx 1.7.11.3 Gryp

    2024年02月02日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包