mkcert生成ssl证书+nginx部署局域网内的https服务访问问题

news2024/11/28 16:46:16

文章目录

  • mkcert生成ssl证书+nginx部署局域网内的https服务访问问题
  • 1、下载mkcert
    • 查看自己的电脑是arm还是amd架构
  • 2、安装mkcert
  • 3、测试mkcert是否安装成功
  • 4、查看CA证书存放位置
  • 5、打开windows的证书控制台
  • 6、生成自签证书,可供局域网内使用其他主机访问
  • 以下是nginx部署https服务相关的内容
    • 到官网下载nginx
    • 使用nginx
    • nginx配置如下所示
    • 启动nginx
    • 验证nginx是否启动成功了。
    • 停止nginx
    • 配置https服务
    • 访问https服务
    • 复用nginx
  • 7、卸载mkcert

简要:关于nginx的使用,大家可以根据目录选择着看相应的内容,毕竟nginx部署静态资源,我感觉,看这篇文章的人几乎都会的。

mkcert生成ssl证书+nginx部署局域网内的https服务访问问题

mkcert是一个用于生成本地自签名SSL证书的开源工具。它基于Golang开发,可以跨平台使用,不需要进行复杂配置,且能自动信任CA。此外,mkcert支持单域名、多域名以及IP,为开发者提供了极大的便利。
请注意,mkcert生成的证书主要用于本地开发和测试环境,不适合在生产环境中使用。在生产环境中,应使用由受信任的证书颁发机构(CA)签发的证书,以确保安全性和用户信任。

1、下载mkcert

这个是官网的地址:Releases · FiloSottile/mkcert (github.com)
在这里插入图片描述

查看自己的电脑是arm还是amd架构

键盘的Win + R键,输入cmd,打开命令窗口
在这里插入图片描述
输入(结果如下图所示)

echo %PROCESSOR_ARCHITECTURE%

回车

在这里插入图片描述
在这里插入图片描述
下载完成后,将下载的exe程序复制到某个目录下。这个目录等下需要用到的。
在这里插入图片描述

2、安装mkcert

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在对应的目录下输入(结果如下图所示)

mkcert-v1.4.4-windows-amd64.exe -install

在这里插入图片描述
会弹出一个安全警告窗口,然后选择是
在这里插入图片描述
选择是之后
在这里插入图片描述

3、测试mkcert是否安装成功

在对应的命令窗口输入(具体看后面的截图)

mkcert-v1.4.4-windows-amd64.exe --help

出现如下截图所示的内容,就说明,mkcert安装成功了
在这里插入图片描述

4、查看CA证书存放位置

输入

mkcert-v1.4.4-windows-amd64.exe -CAROOT

命令。
在这里插入图片描述
我们可以到对应的目录下,看一下对应的目录
在这里插入图片描述

5、打开windows的证书控制台

按住键盘的,“Win键+R键”调出运行框,输入certmgr.msc命令。打开证书控制台。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、生成自签证书,可供局域网内使用其他主机访问

在命令窗口中输入(具体看后面的截图)

mkcert-v1.4.4-windows-amd64.exe localhost 127.0.0.1 ::1 192.168.1.1 
# 这个192.168.1.1是我的电脑的地址,这里根据根据自己的电脑ip进行设定

根据自己的需求填写ip可以有多个ip。(如上所示,就使用localhost、127.0.0.1、::1、192.168.1.1)这四个地址,生成对应的证书,也就是这个证书中,是根据这个四个地址生成的。

在IP地址中,::1 是一个特殊的IPv6地址,被称为回环地址(loopback address)。在IPv4中,回环地址是 127.0.0.1。IPv6的回环地址 ::1 与IPv4的 127.0.0.1 在功能上是相似的。

这种地址在本地开发、测试网络服务和应用时非常有用,因为它确保通信不会离开本地机器,从而避免了可能存在的网络延迟或外部干扰。

在这里插入图片描述
在这里插入图片描述
上面截图中生成的那两个,就是我们后面使用nginx部署本地https服务时用到的证书了。

以下是nginx部署https服务相关的内容

到官网下载nginx

到nginx官网(nginx: download)下载nginx,
在这里插入图片描述

使用nginx

下载成功后,将下载的zip包,根据自己的情况,放到对应的目录下,解压。(这里有一点值得注意的是,nginx最好放在非中文目录下,在nginx-1.24.0版本之前,nginx放在有中文的目录下,时无法启动nginx的)因为,我这里使用的是nginx-1.24.0版本,所以放在中文下,也无所谓。但是在项目部署中,还是不建议,放在有中文的目录下,免得出现奇奇怪怪的的问题,省心省力。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在配置的截图后面,有配置的文字内容,这里先截图出来
在这里插入图片描述

nginx配置如下所示


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8088;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

启动nginx

保存好配置之后,返回上一级目录。启动nginx。

这里关于nginx的启动方式不止一种,根据自己的需求看着选择。

启动方式一
在这里插入图片描述
双击之后会有一个一闪而过的窗口,然后就啥都没有了,这个不用管,往文章后面看就可以了。如果是第一次使用,会有一个弹窗,关于是否允许网络访问的,选择允许即可。

启动方式二
在nginx对应的目录下,输入充cmd
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证nginx是否启动成功了。

访问:http://localhost:8088/
在这里插入图片描述

停止nginx

因为前面已经启动过了nginx,所以如果要使用nginx部署https服务,就需要停止已经启动的nginx,然后修改nginx相关的配置。上面这一步是为了确认nginx已经安装成功了,可以正常启动。停止nginx的方式也有多种,看自己的选择。
方式一:在任务管理器中停止nginx。
在这里插入图片描述
方式二:使用命令nginx -s stopnginx -s quit停止Nginx。
在这里插入图片描述
方式三:杀死所有nginx进程
随便一个命令窗口,如键盘的 Win + R 键,然后输入cmd,打开命令窗口执行下面两步命令,可以找到和停止所有的nginx进程,这个需要特别注意。这个会停止所有的nginx进程,所以如果,你的电脑中有很多个nginx在使用时,不建议使用这个。

tasklist | findstr nginx
taskkill /IM nginx.exe /F

在这里插入图片描述
测试一下nginx是否已经停止了,访问一下:http://localhost:8088/
在这里插入图片描述

综上所述:建议使用方式二,这样停止nginx,即不影响其他nginx,也可以避免停止错nginx。

配置https服务

在这里插入图片描述
在这里插入图片描述
之后,就是打开nginx.conf文件,配置nginx先关的内容了
在这里插入图片描述

nginx的配置如下所示:(截图后面,有配置文件的说明)
在这里插入图片描述
在上面的截图中,这里的证书名称是可以随便重命名的,只要在重命名的时候,保留对应的后缀就可以了。如当我把证书重命名成:aaa-key.pem、aaa.pem时,在nginx对应的配置位置就需要改成,aaa.pem、aaa-key.pem。就一个名称而已,看着改就行了,不改也可以。


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8088;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    
    server {
       listen       4433 ssl; # 改一下端口号,如果使用默认的端口号,可能会造成端口号冲突,导致nginx启动失败
       server_name  localhost; # 这里可以根据自己的需要填,我这里直接使用localhost了

       ssl_certificate     localhost+3-key.pem; # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径
       ssl_certificate_key  localhost+3.pem;    # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
       }
    }

}

访问https服务

配置保存之后,重新启动nginx,然后访问:https://localhost:4433/
在这里插入图片描述
当然了,因为我在配置中,并没有,注释http的配置(http://localhost:8088/),也就是端口为8088的配置,所以使用http也是可以访问的。要想,只能https访问,那就直接注释掉这里相关的就行了。
在这里插入图片描述
如我们直接复制一张图片,到nginx对应部署的目录下:
在这里插入图片描述
然后通过https访问:https://localhost:4433/1.png
在这里插入图片描述
通过http访问:http://localhost:8088/1.png
在这里插入图片描述

复用nginx

因为我把证书放在了,nginx的conf的目录中,所以如果是给别人使用的话。直接压缩,然后发给别人,让别人解压就可以直接使用了。然后根据需求改一下nginx相关的配置,如端口号。这样,就不用把证书复制来复制去,生成来生产去的,配置来配置去的了。方便快捷。
在这里插入图片描述
在这里插入图片描述
直接,如上图所示的,压缩给别人用就行了。我直接放到百度网盘中了,需要的可以自己去拿。
链接:https://pan.baidu.com/s/1s8OL8wVop7ANOQ86yv0sIA
提取码:8778
–来自百度网盘超级会员V4的分享

这里顺便提一下:如果是web开发中,图片展示如果是展示如这里部署的https的服务地址时,浏览器无法正常展示图片,并且显示跨域问题,可以进行如下配置。也就是nginx跨域问题的解决办法。在nginx.conf中的配置


#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    # HTTPS server
    server {
       listen       4433 ssl; # 改一下端口号,如果使用默认的端口号,可能会造成端口号冲突,导致nginx启动失败
       server_name  localhost; # 这里可以根据自己的需要填,我这里直接使用localhost了

       ssl_certificate  localhost+3.pem; # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径
       ssl_certificate_key  localhost+3-key.pem;    # 这个就是证书的存放路径了,这里可以写绝对路径,也可以使用相对路径

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
         # 设置跨域头,这两句就是解决跨域问题的
           add_header 'Access-Control-Allow-Origin' '*';
           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
           root   html;
           index  index.html index.htm;
       }
    }

}

7、卸载mkcert

mkcert-v1.4.4-windows-amd64.exe -uninstall

在这里插入图片描述
选择了是之后,就会卸载安装时相关的内容了,但并不影响nginx,因为这里只是在卸载,Windows中证书控制台相关的内容,跟在nginx部署https时使用的证书并没有关系,所以这个无所谓了,只不过卸载了mkcert之后,要想重新生成nginx部署https时的ssl证书,那就要重新安装一下mkcert而已。但是浏览器访问https服务时,可能会显示不安全连接。
在这里插入图片描述
如果是上面这个,重新mkcert-v1.4.4-windows-amd64.exe -install安装一下就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1562447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录第27天 | 39. 组合总和、40.组合总和II、131.分割回文串

一、前言 今天的主题还是回溯算法&#xff0c;还是根据那个backtracking模板&#xff0c;但是今天会涉及到去重和一些小细节的问题。 二、组合总和 1、思路&#xff1a; 我一开始的想法就是在for循环转化为&#xff1a; for(int i 0; i < size; i) 但是这个是会陷入一…

【LDLTS】拉普拉斯深能级瞬态光谱

Laplace deep level transient spectroscopy&#xff08;拉普拉斯深能级瞬态光谱&#xff0c;简称LDLTS&#xff09;是一种用于分析和表征半导体材料中深层能级缺陷的技术。它是传统能级瞬态光谱&#xff08;DLTS&#xff09;方法的扩展和改进&#xff0c;特别适用于解决传统DL…

Kubernetes kafka系列 | Strimzi 部署kafka-bridge

Strimzi kafka集群部署直通车 一、kafka bridge 介绍 Kafka Bridge 是 Apache Kafka 生态系统中的一个工具或组件&#xff0c;用于实现 Kafka 与其他系统或协议之间的通信或集成。Kafka 本身是一个分布式事件流平台&#xff0c;广泛用于构建实时数据流水线和流式应用程序。然而…

【操作系统】想要更好的学习计算机,操作系统的知识必不可少!!!

操作系统的概念 导言一、日常生活中的操作系统二、计算机系统层次结构三、操作系统的定义3.1 控制和管理计算机资源3.2 组织、调度计算机的工作与资源的分配3.3 给用户和其他软件提供方便接口与环境3.4 总结 四、操作系统的目标和功能4.1 作为管理者4.1.1 处理机管理4.1.2 存储…

用kimichat批量识别出图片版PDF文件中的文字内容

图片版的PDF文件&#xff0c;怎么才能借助AI工具来提取其中全部的文字内容呢&#xff1f; 第一步&#xff1a;将PDF文件转换成图片格式 具体方法参见文章&#xff1a;《零代码编程&#xff1a;用kimichat将图片版PDF自动批量分割成多个图片》 第二步&#xff1a;识别图片中的…

Springboot之Actuator的渗透

1. env http://ip:8080/actuator/env GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息&#xff1b;当程序员的属性名命名不规范&#xff0c;例如 password 写成 psasword、pwd 时&#xff0c;会泄露密码明文&#xff1b; 2.heapdump Heapdump地址为http…

互联网轻量级框架整合之JavaEE基础II

编写本篇代码并实际执行之前请仔细阅读前一篇互联网轻量级框架整合之JavaEE基础I Servlet 在Servlet容器中&#xff0c;Servlet是最基础的组件&#xff0c;也可以把JSP当做Servlet&#xff0c;JSP的存在意义只在于方便编写动态页面&#xff0c;使Java语言能和HTML相互结合&…

深度学习-计算机视觉入门-part1

计算机视觉入门 文章目录 计算机视觉入门一、 从卷积到卷积神经网络1.图像的基本表示2. 卷积操作3.卷积遇见深度学习3.1 通过学习寻找卷积核3.2 参数共享&#xff1a;卷积带来参数量骤减3.3 稀疏交互&#xff1a;获取更深入的特征 二、手撕卷积代码三、经典CNN模型介绍四、CNN模…

爬取BOSS直聘招聘数据(详情页数据+__zp_stoken__逆向)

这里携带逆向方法进行请求 获得数据 需要逆向方法请私聊 , 下面部分只展示爬取思路 对网页进行分析抓包 设置参数 – 城市/薪资范围/职业 对网页进行请求获得数据集 利用xpath,soup等进行进行数据清洗 将数据一csv的格式保存

【面试八股总结】超文本传输协议HTTP(一)

一、 什么是HTTP协议&#xff1f; HTTP是超文本传输协议 HyperText Transfer Protocol 特性&#xff1a; 简单、灵活、易于扩展无状态&#xff1a;服务器不会记忆HTTP状态不安全&#xff1a;通信使用明文&#xff0c;不验证通信方身份&#xff0c;无法的证明报文的完整性&…

研发设计人员能力级别定义

研发设计人员能力&级别定义 1. 源由2. 级别定义3. 级别能力3.1 助理工程师3.1.1 工作内容3.1.2 级别晋升3.1.3 详细描述 3.2 初级工程师3.2.1 工作内容3.2.2 级别晋升3.2.3 详细描述 3.3 高级工程师3.3.1 工作内容3.3.2 级别晋升3.3.3 详细描述 3.4 资深工程师3.4.1 工作内…

百度网站收录提交入口

百度网站收录提交入口 在网站刚建立或者更新内容后&#xff0c;及时将网站提交给搜索引擎是提高网站曝光和获取流量的重要步骤之一。百度作为中国最大的搜索引擎之一&#xff0c;网站在百度中的收录情况尤为重要。下面介绍一下如何通过百度的网站收录提交入口提交网站。 1. 百…

黑马HTMLCSS基础

黑马的笔记和资料都是提供好了的&#xff0c;这个文档非常适合回顾复习。我在黑马提供的笔记上做了一些微不足道的补充&#xff0c;以便自己复习查阅。该笔记比较重要的部分是 表单&#xff0c;http请求 第一章. HTML 与 CSS HTML 是什么&#xff1a;即 HyperText Markup lan…

VScode 集成终端设置默认打开当前文件夹 mac系统

一.快捷键设置 搜索 openInIntegratedTerminal 如图&#xff1a; 二.设置cmd 默认打开位置 点击设置 搜索 ntegrated:cwd 如下图&#xff1a; 三.查看ip 快捷指令&#xff1a; ipconfig getifaddr en0

【御控物联】JSON结构数据转换在物联业务中应用(场景案例二)

文章目录 一、物联网业务场景现状二、物联网业务场景数据交互格式三、JSON格式数据转换案例四、JSON数据格式转换DEMO五、在线转换工具六、技术资料 一、物联网业务场景现状 目前&#xff0c;市场上多数物联网关与物联平台捆绑售卖&#xff0c;网关采集到设备数据只能按照指定…

亲测可用,解决matplotlib中文字体乱码问题(使用Windows设置)

SimHei字体下载 https://pan.baidu.com/s/14BzhntzSeEjE4FmlVENwUw?pwd1111 用我自己的,看了好几个其他博主的帖子,所用的下载链接都失效了,太TM不靠谱了 import matplotlib.pyplot as plt import random x range(60) x_ticks_label ["11点{}分".format(i) for …

HashMap 集合源码分析

系列文章目录 文章目录 系列文章目录前言谈一谈HashMap的红黑树节点类 TreeNode 设计一、字段分析二、构造方法分析三、内部类分析四、方法分析五、扩容分析六、总结 前言 HashMap 底层是使用了 哈希表&#xff08;数组实现的哈希表&#xff09; 链表 红黑树 实现的&#xff…

Spring框架之WebFlux

Spring WebFlux高级实战 1、WebFlux作为核心响应式服务器基础 Spring 框架的整个基础设施都是围绕Servlet API 构建的&#xff0c;它们之间紧密耦合。 因此在开始深入响应式Web 之前&#xff0c;先回顾一下Web 模块的设计&#xff0c;看看它做了什么。 底层Servlet 容器负责…

mysql 数据库的MHA高可用

目录 一、MHA概述&#xff1a; 1.认识MHA&#xff1a; 2.MHA 的组成&#xff1a; 3.MHA 的特点&#xff1a; 4.MHA 工作原理&#xff1a; 5.数据流向&#xff1a; 6.数据同步方式&#xff1a; 7. mysql 的高可用 &#xff1a; 二. MySQL MHA 的搭建: 1. 修改 Master、…

LeetCode刷题:无重复字符的最长子串 详解 【3/1000 第三题】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…