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

文章目录

  • 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 serverserver {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 serverserver {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.rhkb.cn/news/298401.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)

1.选型对比 最近项目上有对项目服务及中间件的监控需求,要做实现方案调研,总结一下自己的成果,目前业界主流可选的方案有: 国外开源: Prometheus:Prometheus - Monitoring system & time series dat…

基于Java课程选课系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

Java设计模式:代理模式的静态和动态之分(八)

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在软件设计中,代理模式是一种常用的设计模式,它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…

HTML常用标签-最基础的标签

从本篇开始,我们围绕HTML原生标签开始,围绕整个前端三剑客进行,将进行一个大致的介绍和案例展示,没有啥技术含量,只是把学习前端的时候,案例全部展示出来,作为一个实时记录,或者说回…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

武汉星起航电子商务有限公司一站式解决方案引领跨境电商新篇章

随着全球电子商务的迅猛发展,越来越多的创业者希望进入跨境电商领域,发掘无限商机。武汉星起航电子商务有限公司正是这样一个平台,凭借其独特的一站式解决方案,帮助创业者顺利开启跨境电商之旅,实现业务增长。 作为一…

【蓝桥杯】GCD与LCM

一.概述 最大公约数(GCD)和最小公倍数(Least Common Multiple,LCM) 在C中,可以使用 std::__gcd(a, b)来计算最大公约数 1.欧几里德算法/辗转相除法 int gcd(int a,int b){return b?gcd(b, a%b):a; } 2…

SourceTree 克隆仓库

随笔记录 目录 1. 背景介绍 2. SourceTree 2.1 本地创建文件夹 2.2 获取Git 远程仓库路径 2.3 sourceTree 克隆代码 3. FAQ 3.1 填写 ssh 仓库路径后,sourceTree 一直提示正在检查源,无法识别git 远程仓库 1. 背景介绍 Sourcetree 是 Windows …

【Apache Doris】周FAQ集锦:第 2 期

【Apache Doris】周FAQ集锦:第 2 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

蓝桥杯第十四届C++A组(未完)

【规律题】平方差 题目描述 给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 。 输入格式 输入一行包含两个整数 L, R,用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 样例输入 1 5 样例输出 …

Tidb和MySQL性能简单测试对比

一、单SQL性能对比 由于TiDB的并发能力优秀,但是单个SQL执行延迟较差,为了客观对比,所以只用1个线程来压测tidb和mysql,以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 (单机) 三、结论 …

c/c++ | socket tcp client server

突然想着,花一个socket tcp 客户-服务通信 这应该是很经典的流程了吧 感觉还是要训练这种随手画图的能力,毕竟文字的描述还是不及图片强烈 参考01

策略模式图

策略模式 小小的图解 主要的三个角色 Strategy—抽象策略角色ConcreateStrategy—具体策略角色Context—上下文角色 封装了对具体策略的调用可以使用set的依赖注入也可以使用构造方法 核心是上下文角色 只要调用上下文角色就行,实现解耦 策略 工厂 将上下文角…

基于SpringBoot和Vue的金融融资管理系统的设计和实现【附源码】

1、系统演示视频(演示视频) 2、需要交流和学习请联系

深入了解 Python 中标准排序算法 Timsort

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ Timsort:一个非常快速的、时间复杂度为 O ( n l o g n ) O (n \ log\ n) O(n log n)、稳健(即不改变等值元素间的相对顺序)的排序算法,在处理真实世界数…

拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点: 谷歌 2020 SIGCOM基于delay的AIMD拥塞拆分EC和FC,时延敏感场景优势分别计算EC和FC的wnd(最核心)保障吞吐和低延迟。Swift 因利用延迟的简单性和有效性而闻名包级别的论文:https://dl.acm.org/doi/pdf/10.11…

【C++】二叉搜索数

目录 一、二叉搜索树的概念 二、二叉搜索树的模拟实现 1、定义节点 2、构造二叉树 3、析构二叉树 ​4、拷贝二叉树 5、二叉树赋值 6、插入节点 🌟【非递归方式】 🌟【递归方式】 7、打印节点 8、搜索节点 🌟【非递归方式】 &…

DDR3接口

mig IP核的配置 首先添加mig IP核   然后确认以下工程信息,主要是芯片型号以及编译环境,没什么问题后点击next.   如下图所示,这一页选择"Create Design",在"Component Name"一栏设置该IP元件的名称&…

Prometheus+grafana环境搭建Nginx(docker+二进制两种方式安装)(六)

由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前五篇链接如下 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组2.0

A立方和 #include<iostream> #include<cmath> using namespace std; int main(){int n, t, flag, x;long long ans 0;for(int i 1; i < 2019; i){t i;flag 0;while(t && !flag){x t % 10;if(x 2 || x 0 || x 1 || x 9) flag 1;t / 10;}if(fl…