win如何使用OpenSSL生成自签名证书,使 http 升级为 https

win如何使用OpenSSL生成自签名证书,使 http 升级为 https

前言

HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL安全连接之上。

创建自签名证书需要安装openssl。参考本文安装OpenSSL部分。

使用OpenSSL生成自签名证书的步骤:参考本文使用OpenSSL生成自签名证书部分。

  1. 创建私钥Key(.key文件);
  2. 创建签名请求(.csr文件);
  3. 将Key中的密码;
  4. 用Key签名证书(.key+.csr=>.crt)

为HTTPS准备的证书需要注意,创建的签名请求的CN必须与域名完全一致,否则无法通过浏览器验证。

文章目录

  • 前言
  • CA证书和自签名证书的区别?
  • 安装OpenSSL
    • 下载OpenSSL安装包
    • 安装
    • 设置环境变量
    • 验证安装是否正确
  • 使用OpenSSL生成自签名证书
    • 进入SSL文件夹
    • 生成服务器私钥(.key 文件)
    • 去除私钥中的密码
    • 生成证书签名请求(.csr文件)
    • 生成自签名SSL证书(.crt文件)
  • 自签名证书的使用(以Nginx为例)
    • 服务端上传SSL证书
    • 服务端配置443端口并使用SSL证书
    • 客户端访问https
        • 方式一:强制浏览器和操作系统接受我们自己的证书颁发机构
        • 方式二:在您的浏览器/操作系统中安装证书授权
  • 参考文章

CA证书和自签名证书的区别?

CA证书和自签名证书都是用于加密通信的数字证书,但是它们之间有一些重要的区别:

  1. CA证书是由公认的数字证书授权机构(CA)颁发的,而自签名证书是由用户自行创建的。CA是Certificate Authority的缩写,也叫“证书授权中心”。

  2. CA证书的安全性更高,因为它们受到权威机构的信任和监管。自签名证书的安全性取决于用户的技能和处理过程。

  3. CA证书可用于公共网络和网站,因为它们已被许多浏览器和操作系统信任。自签名证书只能在私有网络或用于测试目的使用。

  4. CA证书需要支付费用,而自签名证书是免费的。

总的来说,如果您需要在公共网络上运行网站或应用程序,那么建议使用CA证书。如果您只需要在私有网络上加密通信或进行测试,则可以使用自签名证书。

安装OpenSSL

下载OpenSSL安装包

前往https://slproweb.com/products/Win32OpenSSL.html 下载win OpenSSL安装包

exe 和 msi二选一即可。注意,我们Light版本是轻量版,我们直接下载完整版本。

image-20230620164808956

下载下来是Win64OpenSSL_Light-3_1_1.msi

安装

安装过程多数选择默认即可。

注意在选择将OpenSSL的DLL安装到Windows/System/下还是安装目录的bin目录下时,我们选择bin目录,避免System目录下其他软件的DLL影响OpenSSL。

image-20230620165052362

其他页面一直点击下一步即可安装完成。

最后这个页面可以选择给作者打赏,不打赏的话全部取消勾选即可。

image-20230620165435140

安装完成。

image-20230620165641032

设置环境变量

我们还需要在系统环境变量里面添加路径,我的是C:\Program Files\OpenSSL-Win64\bin

image-20230620170325508

添加好后,点击右边上移按钮,上移到最上面:

image-20230620170443484

保存修改即可。

验证安装是否正确

打开cmd,输入命令查看版本:

openssl version

image-20230620170841365

可以看到安装成功。如果不是我们安装的版本信息,可能需要重启电脑。

使用OpenSSL生成自签名证书

进入SSL文件夹

创建SSL文件夹,用于存放生成的证书文件。我的是 D:\ssl证书

打开cmd,cd到SSL文件夹路径,输入命令openssl回车。

D:
cd D:\ssl证书
openssl

image-20230620172004479

生成服务器私钥(.key 文件)

输入以下命令生成秘钥文件:

openssl genrsa -des3 -out server.pass.key 2048

随后输入一个4位以上的密码,然后再输入一次密码。如图:

image-20230621151645656

命令解释如下:

genra:生成RSA私钥
-des3:使用des3算法
-out :指定生成文件名
2048:私钥长度设置为2048

image-20230621151833827

去除私钥中的密码

openssl rsa -in server.pass.key -out server.key

rsa: 生成RSA私钥

-in:输入私钥文件

-out: 输出私钥文件

无密码:设置无密码的私钥文件

随后输入server.pass.key的密码。如图:

image-20230621154021717

image-20230621154213483

生成证书签名请求(.csr文件)

输入以下命令生成证书签名请求:

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=OrganizeName/OU=UnitName/CN=192.168.0.174"

req:生成证书签名请求
-new:新生成
-key:私钥文件
-out:指定生成的CSR文件名
-subj:生成CSR证书的参数

subj参数说明如下:

字段全称举例
/C=Country 国家CN
/ST=State or Province 州/省Zhejiang
/L=Location or City 城市Hangzhou
/O=Organization 组织/企业OrganizeName
/OU=Organization Unit 部门UnitName
/CN=Common Name 域名or IPwww.yourdomain.com 或者 192.168.x.x

image-20230621162346434

image-20230621162257265

生成自签名SSL证书(.crt文件)

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

image-20230621164408154

image-20230621164506161

-days:证书有效期

-req:需要证书

-in:输入csr文件

-signkey:指定 .key 文件

-out:输出crt文件

文件夹总共有4个文件,server.pass.key 、server.key、server.csr、server.crt。

其中配置nginx的话需要server.key和server.crt两个文件。

至此,证书生成完成。

X.509 证书包含三个文件:key,csr,crt
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

image-20230621170451632

自签名证书的使用(以Nginx为例)

服务端上传SSL证书

Web服务器需要把server.crt发给浏览器验证,然后用server.key解密浏览器发送的数据。(剩下两个文件server.pass.keyserver.csr已经不需要了)。

image-20230626154433703

服务端配置443端口并使用SSL证书

以Nginx为例,我们在 %你的Nginx安装目录%/conf/nginx.conf 里添加对443端口的监听。

需要在server{...}中配置:

	server {#监听443端口listen       443 ssl; server_name  127.0.0.1;#ssl证书的crt文件路径ssl_certificate     D:\\SSLCertificate\\server.crt;#ssl证书的key文件路径ssl_certificate_key D:\\SSLCertificate\\server.key;#反向代理location / {root   html;index  index.html index.htm;proxy_pass  http://127.0.0.1:7001;}}

image-20230626155337110

修改完成后,输入以下命令重新加载 nginx.conf 即可

D:
cd D:\Nginx
nginx -s reload

客户端访问https

如果一切顺利,打开浏览器,就可以通过HTTPS访问网站。第一次访问时会出现警告(因为我们的自签名证书不被浏览器信任)如图所示:

image-20230627090738002

方式一:强制浏览器和操作系统接受我们自己的证书颁发机构

一种做法是:点击【高级】->【继续前往192.168.x.x(不安全)】。

您可以强制浏览器和操作系统接受我们自己的证书颁发机构。因此,一旦安装 CA 证书并将其添加到受信任列表中,您将不会看到安全警告。

方式二:在您的浏览器/操作系统中安装证书授权

另一种做法:您还可以与您的开发团队共享 CA 证书,以便在他们的浏览器中安装。通过浏览器把证书导入并设置为“受信任”,以后该电脑访问网站就可以安全地连接Web服务器了。

  1. MAC 用户查看此指引
  2. Windows 用户查看此指引

参考文章

给Nginx配置一个自签名的SSL证书

使用OpenSSL生成自签名SSL证书

How to Create Self-Signed Certificates using OpenSSL

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

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

相关文章

给LLM装上知识:从LangChain+LLM的本地知识库问答到LLM与知识图谱的结合

第一部分 基于LangChain ChatGLM-6B的本地知识库问答的应用实现 1.1 什么是LangChain:连接本地知识库与LLM的桥梁 作为一个 LLM 应用框架,LangChain 支持调用多种不同模型,提供相对统一、便捷的操作接口,让模型即插即用&#x…

从零实现深度学习框架——Seq2Seq机器翻译实战

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 💡系列文章完整目录: 👉点此👈 要深入理解…

Android Studio实现内容丰富的安卓自行车租赁平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号105 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查…

使用itextpdf填充表单域并生成pdf

文章目录 前言一、准备工作1.1 安装软件1.2 准备pdf1.3 设置表单域 二、创建项目三、编写代码3.1 编写工具类3.2 测试 四、测试结果 前言 最近手上有个任务,就是需要做一个pdf导出的功能。 可选择的技术点比较多,我这边综合考虑之后,使用的…

【单例模式】—— 每天一点小知识

💧 单例模式 \color{#FF1493}{单例模式} 单例模式💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形…

基于卷积变分自动编码器的3D数据处理与重建【CVAE】

在这个项目中,我们将学习如何使用卷积变分自动编码器 (CVAE) 来处理和重建 3D 湍流数据。 我们使用计算流体动力学 (CFD) 方法生成 3D 湍流立方体,每个 3D 立方体沿着三个速度分量携带物理信息(与图像数据类似,被视为单独的通道&…

Http host 标头攻击

一、什么是http host 标头攻击 HTTP Host 标头攻击是一种网络安全攻击技术,利用了 HTTP 协议中的 Host 标头字段的漏洞。Host 标头字段用于指定客户端请求的目标主机名或域名。 攻击者可以通过构造恶意的 HTTP 请求,伪造或篡改 Host 标头字段的值&#x…

Linux系统安全:安全技术和防火墙

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Linux系统安全:安全技术和防火墙1.安全技术:2.入侵防御系统 (Intrusion Prevention System) :3.防火墙 ( Erewall ) :4.防水墙&#xff…

GPT模型训练实践(3)-参数训练和代码实践

一、参数训练 GPT模型参数的训练过程宏观上有两个大环节,先从上往下进行推理,再从下往上进行训练,具体过程为: 1、模型初始化参数随机取得; 2、计算模型输出与真实数据的差距(损失值和梯度) …

Linux 6.5增加对高通开源GPU Adreno 690的支持

导读即将推出的Linux 6.5内核将把对高通Adreno 690 GPU的支持添加到开源的MSM内核图形/显示驱动程序中。A690主要用于骁龙8cx第三代(SC8280XP)平台,而联想ThinkPad X13s笔记本电脑和其他硬件也采用了该平台。 新的支持将包含近200行代码&…

JS数据分组引发的思考

我们经常需要对数据进行分组(分类),得到需要的格式。 1.简单示例 例如有一份对象数组的数据 const data [{ name: Liam, age: 18, sex: male },{ name: Bob, age: 20, sex: male },{ name: Diana, age: 21, sex: female },{ name: Grace, age: 20, sex: female }…

【云原生丶Kubernetes】Kubernetes初体验

人生若只如初见,何事秋风悲画扇。 前言 Kubernetes 是目前最流行的容器编排工具之一,由Google开发并维护。它提供了完整的容器编排解决方案,包括自动化部署、资源管理和调度、服务发现和负载均衡等功能。 然而,对于初学者来说&a…