openssl 生成证书 windows导入证书

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客

注意本文可能无法生成v3格式的证书,如何生成v3格式请看:openssl 正确生成v3带SAN的证书-CSDN博客


目录

证书和私钥

CA证书和私钥

需要谁的CA证书

单向认证和双向认证

生成CA、密钥、证书的全套操作

去掉私钥密码

导入到windows证书管理

为什么导入成功却无法使用

生成pfx证书(带私钥)

导入CA证书

浏览器选择证书


        大部分情况下我们需要用到CA证书(和私钥)、服务器证书(和私钥)、客户端证书(和私钥),有时候一些人不是太理解这几个东西,稍微解释一下。

证书和私钥

        首先必要知道公开密钥算法的奇妙之处:一对密钥,互相解密。证书就是盖了公章的公钥,可以发布给全世界,私钥你自己藏好。

CA证书和私钥

        相当于公安部,CA签名的证书就相当于公安部盖章的身份证,是可信的。CA的证书会由操作系统预置,作为信任体系的基础。

        在windows的证书管理中,这部分叫做“受信任的根证书颁发机构”。在openssl调用中,这一般由CA证书参数指定,是一个文件或一个目录位置,里面放置了所有信任的根证书。

        如果CA是我们自己建立的,我们会拥有对应的私钥,以便签发服务器证书和客户端证书(以及其他CA所能做的),如果CA不是我们自己建立的,显然,我们不可能拥有CA的私钥。

需要谁的CA证书

        通讯时需要确认对方的身份,对方提供的证书是否可信?最终是判断对方的证书签发者的CA证书是否可信(自己的证书的签发者自己当然是信任的,不需要验证),所以,服务器调用时需要的CA证书是客户端的,客户端需要的CA证书是服务器的,为了简单起见,我们一般用服务器的CA证书签发客户端证书给客户端用,这样就没有区别了。

        严格地讲,服务器和客户端证书都应该是从公开的可信的CA那里申请的,而不是我们自己建立的(就好比我们自己建立了一个公安部印制身份证,这可严重犯法了)。我们签发的证书在互联网上是不会被认可的,但是如果我们的客户是特定的客户群,他们可以手工信任我们的CA,那么自建CA是可以的,事实上,一般企业服务都是这样做的。

单向认证和双向认证

        单向认证指的是服务器不验证客户端证书、仅仅需要客户端验证服务器的证书(服务器和客户端的设置是独立的,服务器上的设置一般叫做“不验证”),双向认证指的是服务器也要验证客户端的证书(服务器上的设置一般叫做“peer to peer”)。

        因为管理客户端证书很麻烦,一般我们就用单向认证,只需要客户端认可服务器证书的签发CA就可以了,能起到传输加密的效果,防偷听。

生成CA、密钥、证书的全套操作

        直接执行即可生成全套:

#创建CA证书私钥
openssl genrsa -aes256 -out ca.key 2048
#请求证书
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CA/emailAddress=admin@test.com"
#自签署证书
openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer#创建服务器私钥
openssl genrsa -aes256 -out server.key 2048
#请求证书
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=SERVER/emailAddress=admin@test.com"
#使用CA证书签署服务器证书
openssl x509 -req -days 36500 -sha256 -extensions v3_req  -CA  ca.cer -CAkey ca.key  -CAserial ca.srl  -CAcreateserial -in server.csr -out server.cer#生成客户端私钥
openssl genrsa -aes256 -out client.key 2048
#申请证书
openssl req -new -sha256 -key client.key  -out client.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CLIENT/emailAddress=admin@test.com"
#使用CA证书签署客户端证书
openssl x509 -req -days 36500 -sha256 -extensions v3_req  -CA  ca.cer -CAkey ca.key  -CAserial ca.srl  -CAcreateserial -in client.csr -out client.cer

去掉私钥密码

        密钥名称需要替换:

#去掉私钥密码
openssl rsa -in password.key -out nopassword.key

导入到windows证书管理

为什么导入成功却无法使用

        直接导入.cer证书是没用的,因为.cer只有证书没有私钥,单独导入.key格式不识别,合并为.pem也不行,还是只认证书不认私钥。没有私钥就无法进行双向认证的加密通讯。

        在证书管理查看证书,正确的包含私钥的证书如下:

        如果没有私钥就没有红框内的内容。 

生成pfx证书(带私钥)

#生成用于windows的pfx证书(pem格式无法导入私钥)
openssl pkcs12 -export -out client.pfx -inkey client.key -in client.cer

        导入pfx格式就没问题了。

导入CA证书

        如果提示证书无法验证,那是因为根证书不受信任,将ca.cer导入到“受信任的根证书颁发机构”就可以了。因为不需要使用CA证书签发新证书,所以不需要CA的私钥文件。

浏览器选择证书

        服务器要求双向认证时浏览器会提示选择证书:

        如果证书没有私钥,是不会显示在这里的。


(这里是文档结束) 

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

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

相关文章

什么是词嵌入?Word2Vec、GloVe 与 FastText 的区别

自然语言处理(NLP)领域的核心问题之一,是如何将人类的语言转换成计算机可以理解的数值形式,而词嵌入(Word Embedding)正是为了解决这个问题的重要技术。本文将详细讲解词嵌入的概念及其经典模型(Word2Vec、GloVe 和 FastText)的原理与区别。 1. 什么是词嵌入(Word Em…

笔记本搭配显示器

笔记本:2022款拯救者Y9000P,显卡RTX3060,分辨率2560*1600,刷新率:165Hz,无DP1.4口 显示器:2024款R27Q,27存,分辨率2560*1600,刷新率:165Hz &…

在php中怎么打开OpenSSL

(点击即可进入聊天助手) 背景 在使用php做一些项目时,有用到用户邮箱注册等,需要开启openssl的能力 在php系统中openssl默认是关闭状态的,在一些低版本php系统中,有的甚至需要在服务器终端后台,手动安装 要打开OpenSSL扩展,需要进行以下步骤 …

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

Docker小游戏 | 使用Docker部署RPG网页小游戏

Docker小游戏 | 使用Docker部署RPG网页小游戏 前言一、项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署RPG网页小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问RPG网页小游戏五、总结前言 随着互联网技术的不断…

如何把一个python文件打包成一步一步安装的可执行程序

将一个 Python 文件打包成可执行程序(如 .exe 文件),并实现一步一步的安装过程,通常需要以下步骤: 1. 将 Python 文件打包成可执行文件 使用工具将 Python 脚本打包成可执行文件(如 .exe)。常用…

K8S 快速实战

K8S 核心架构原理: 我们已经知道了 K8S 的核心功能:自动化运维管理多个容器化程序。那么 K8S 怎么做到的呢?这里,我们从宏观架构上来学习 K8S 的设计思想。首先看下图: K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave…

setupdd!SpAppendDiskTag函数分析之末尾添加字符串

setupdd!SpAppendDiskTag函数分析之末尾添加字符串 SpAppendDiskTag函数运行之前, 0: kd> db 0xe108a07c e108a07c 31 00 35 00 33 00 35 00-34 00 20 00 4d 00 42 00 1.5.3.5.4. .M.B. e108a08c 20 00 44 00 69 00 73 00-6b 00 20 00 30 00 20 00 .D.…

Ubuntu 18.04安装Emacs 26.2问题解决

个人博客地址:Ubuntu 18.04安装Emacs 26.2问题解决 | 一张假钞的真实世界 no X development libraries were found checking for X... no checking for X... true configure: error: You seem to be running X, but no X development libraries were found. You …

软考信安27~Windows操作系统安全相关

1、Windows账户与组管理 1.1、用户账户查看 whoami #查看当前登录的用户名称 whoami /all #查看当前系统的用户名和组信息,以及SID whoami /user #查看当前用户的SID net user #查看系统中包含哪些用户 wmic useraccount get name,sid #查看…

134.力扣刷题--加油站--滑动窗口

你知道的,失败总是贯穿人生的始终。 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#x…

爬虫基础(二)Web网页的基本原理

一、网页的组成 网页由三部分构成:HTML、JavaScript、CSS。 (1)HTML HTML 相当于网页的骨架,它通过使用标签来定义网页内容的结构。 举个例子: 它把图片标签为img、把视频标签为video,然后组合到一个界面…

【单细胞-第三节 多样本数据分析】

文件在单细胞\5_GC_py\1_single_cell\1.GSE183904.Rmd GSE183904 数据原文 1.获取临床信息 筛选样本可以参考临床信息 rm(list ls()) library(tinyarray) a geo_download("GSE183904")$pd head(a) table(a$Characteristics_ch1) #统计各样本有多少2.批量读取 学…

Three.js实现3D动态心形与粒子背景的数学与代码映射解析

一、效果概述 本文通过Three.js构建了一个具有科技感的3D场景,主要包含两大视觉元素: 动态心形模型:采用数学函数生成基础形状,通过顶点操作实现表面弧度。星空粒子背景:随机分布的粒子群组形成空间层次感。复合动画…

Java线程认识和Object的一些方法

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 要对Java线程有整体了解,深入认识到里面的一些方法和Object对象方法的区别。认识到Java对象的ObjectMonitor,这有助于后面的Synchron…

【蓝桥杯省赛真题02】C++猫吃鱼 第十届蓝桥杯青少年创意编程大赛 算法思维 C++编程省赛真题解

目录 C猫吃鱼 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C猫吃鱼 第十届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 明明家从1号站点出发,开车去旅游,一共要经过n个…

无公网IP 外网访问 本地部署夫人 hello-algo

hello-algo 是一个为帮助编程爱好者系统地学习数据结构和算法的开源项目。这款项目通过多种创新的方式,为学习者提供了一个直观、互动的学习平台。 本文将详细的介绍如何利用 Docker 在本地安装部署 hello-algo,并结合路由侠内网穿透实现外网访问本地部署…

《DeepSeek 实用集成:大模型能力接入各类软件》

DeepSeek 实用集成 awesome-deepseek-integration/README_cn.md at main deepseek-ai/awesome-deepseek-integration 将 DeepSeek 大模型能力轻松接入各类软件。访问 DeepSeek 开放平台来获取您的 API key。 English/简体中文 应用程序 Chatbox一个支持多种流行LLM模型的桌…

基础项目实战——学生管理系统(c++)

目录 前言一、功能菜单界面二、类与结构体的实现三、录入学生信息四、删除学生信息五、更改学生信息六、查找学生信息七、统计学生人数八、保存学生信息九、读取学生信息十、打印所有学生信息十一、退出系统十二、文件拆分结语 前言 这一期我们来一起学习我们在大学做过的课程…

实现基础的shell程序

1. 实现一个基础的 shell 程序,主要完成两个命令的功能 cp 和 ls 1.1.1. cp 命令主要实现: ⽂件复制⽬录复制 1.1.2. ls 命令主要实现: ls -l 命令的功能 1.1. 在框架设计上,采⽤模块化设计思想,并具备⼀定的可扩…