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的私钥文件。
浏览器选择证书
服务器要求双向认证时浏览器会提示选择证书:
如果证书没有私钥,是不会显示在这里的。
(这里是文档结束)
相关文章:

openssl 生成证书 windows导入证书
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

程序员学英文之At the Airport Customs
Dialogue-1 Making Airline Reservation预定机票 My cousin works for Xiamen Airlines. 我表哥在厦航上班。I’d like to book an air ticket. 我想预定一张机票。Don’t judge a book by its cover. 不要以貌取人。I’d like to book / re-serve a table for 10. 我想预定一…...

字节iOS面试经验分享:HTTP与网络编程
字节iOS面试经验分享:HTTP与网络编程 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 字节iOS面试经验分享:HTT…...

游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局
一、盒模型 题目:简述CSS的盒模型 答:盒模型有两种类型,可以通过box-sizing设置 1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。 2.边框盒模型&a…...

Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
前言:本节内容为网络层。 主要讲解IP协议报文字段以及分离有效载荷。 另外, 本节也会带领友友认识一下IP地址的划分。 那么现在废话不多说, 开始我们的学习吧!! ps:本节正式进入网络层喽, 友友们…...

服务器虚拟化实战:架构、技术与最佳实践
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 服务器虚拟化是现代 IT 基础设施的重要组成部分,通过虚拟化技术可以提高服务器资源利用率、降低硬件成本&am…...

(leetcode 213 打家劫舍ii)
代码随想录: 将一个线性数组换成两个线性数组(去掉头,去掉尾) 分别求两个线性数组的最大值 最后求这两个数组的最大值 代码随想录视频 #include<iostream> #include<vector> #include<algorithm> //nums:2,…...

[C语言日寄] <stdio.h> 头文件功能介绍
在C语言的世界里,<stdio.h> 是一个极其重要的头文件,它提供了标准输入输出功能,是C语言程序与用户交互的核心工具。今天,我们就来深入探讨 <stdio.h> 的功能、使用注意事项以及它的拓展应用。 功能介绍 <stdio.h…...

一文读懂 Faiss:开启高维向量高效检索的大门
一、引言 在大数据与人工智能蓬勃发展的当下,高维向量数据如潮水般涌现。无论是图像、音频、文本,还是生物信息领域,都离不开高维向量来精准刻画数据特征。然而,在海量的高维向量数据中进行快速、准确的相似性搜索,却…...

【二叉搜索树】
二叉搜索树 一、认识二叉搜索树二、二叉搜索树实现2.1插入2.2查找2.3删除 总结 一、认识二叉搜索树 二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它具有以下特征: 若它的左子树不为空,则…...

R语言统计分析——ggplot2绘图5——拟合光滑曲线
参考资料:R语言实战【第2版】 ggplot2包可以通过计算统计函数并添加到图形中。例如:分级数据、计算密度、轮廓和分位数等。这里我们重点将添加平滑曲线(线性、非线性和非参数)到散点图中。 我们可以使用geom_smooth()函数来添加一…...

疯狂拆单词01
疯狂拆单词01 有些单词是可以拆的,不,是可以反复拆的,拆着拆着,你的词汇量,就能快速飙升: 【】disappointment disappointment n.失望,沮丧,扫兴 (ment-名缀࿰…...

高效学习方法分享
高效学习方法分享 引言 在信息高速发展的今天,学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫,信息的爆炸让你无从下手?今天,我们将探讨几种高效的学习方法,帮助你从中找到适合自己的学习之道。关于学…...

01.双Android容器解决方案
目录 写在前面 一,容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups(Control Groups) 1.1.3 联合文件系统(Union File System) 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署(CI/…...

一文大白话讲清楚webpack进阶——9——ModuleFederation实战
文章目录 一文大白话讲清楚webpack进阶——9——ModuleFederation实战1. 啥是ModuleFederation2. 创建容器应用3. 创建远程应用4. 启动远程应用5. 使用远程应用的组件 一文大白话讲清楚webpack进阶——9——ModuleFederation实战 1. 啥是ModuleFederation 先看这篇文章&#…...

Mysql意向锁
这里写目录标题 前置问题概念作用兼容互斥性总结 前置问题 首先我们需要问自己什么是意向锁? 为什么要有意向锁? 意向锁如何使用? 概念 mysql官网上对于意向锁的解释中有这么一句话 The main purpose of IX and IS locks is to show that …...

输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
input_strinput("请输入一行字符: ") letter0 #表示英文字母的个数 space0 #表示空格的个数 digit0 # 表示数字的个数 others0 #表示其它字符的个数for char in input_str:if char.isalpha(): #判断字符char是否字母letter1elif char.isspace(): # 判断是否空格space…...

AD电路仿真
目录 0 前言 仿真类型 仿真步骤 仿真功能及参数设置 仿真模型 应用优势 1 新建原理图 2 放置元器件及布线 3 放置探头 4 实验结果 Operating Point 分析的作用 DC Sweep 的主要功能 Transient Analysis 的主要功能 AC Analysis 的功能 5 总结 1. 直流工作点分析…...

vim 中粘贴内容时提示: -- (insert) VISUAL --
目录 问题现象:解决方法:问题原因: 问题现象: 使用 vim 打开一个文本文件,切换到编辑模式后,复制内容进行粘贴时有以下提示: 解决方法: 在命令行模式下禁用鼠标支持 :set mouse …...

Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
目录 ①. Redis为什么选择单线程? ②. 既然单线程这么好,为什么逐渐又加入了多线程特性? ③. redis6的多线程和IO多路复用入门篇 ④. Redis6.0默认是否开启了多线程? ⑤. REDIS多线程引入总结 ①. Redis为什么选择单线程? ①…...

ZZNUOJ(C/C++)基础练习1021——1030(详解版)
目录 1021 : 三数求大值 C语言版 C版 代码逻辑解释 1022 : 三整数排序 C语言版 C版 代码逻辑解释 补充 (C语言版,三目运算)C类似 代码逻辑解释 1023 : 大小写转换 C语言版 C版 1024 : 计算字母序号 C语言版 C版 代码逻辑总结…...

力扣116. 填充每个节点的下一个右侧节点指针
Problem: 116. 填充每个节点的下一个右侧节点指针 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 本题目的难点在于对于不同父节点的邻接问题因此我们可以抽象将两两节点为一组(不同父节点的两个孩子节点也抽象为一组)…...

寒武纪MLU370部署deepseek r1
文章目录 前言一、平台环境准备二、模型下载三、环境安装四、代码修改五、运行效果 前言 DeepSeek-R1拥有卓越的性能,在数学、代码和推理任务上可与OpenAI o1媲美。其采用的大规模强化学习技术,仅需少量标注数据即可显著提升模型性能,为大模…...

Python NumPy(10):NumPy 统计函数
1 NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 1.1 numpy.amin() 和 numpy.amax() numpy.amin() 用于计算数组中的元素沿指定轴的最小值。 numpy.amin(a, axisNone, outNone, keep…...

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 Chapter1 Ubuntu下的DoxygenVScode实现C/C接口文档自动生成1、 Doxygen简介1. 安装Doxygen1)方法一:2)方法二:2. doxygen注释自动生成插件3. doxygen注释基本语法4. doxygen的生成…...

【字符串两大注意事项】
表达字符串的方式 1.双引号:"hello world" 2.字符指针:char* ptr "hello world" 3.字符数组:char arr[] "hello world"辨析 项目表示方式代表含义内存分布1“hello world”字符串字面量字符串常量就是数据…...

jmap命令详解
jmap 用于生成 heap dump 文件,如果不使用这个命令,还可以使用-XX:HeapDumpOnOutOfMemoryError参数来让虚拟机出现 OOM 的时候自动生成 dump 文件。 jmap 不仅可以生成 dump 文件,还可以查询finalize执行队列、Java 堆的详细信息,…...

微机原理与接口技术期末大作业——4位抢答器仿真
在微机原理与接口技术的学习旅程中,期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统,通过这个项目,深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…...

FOC核心原理的C语言实现
概述 应用FOC算法,比如无人机、电动汽车或工业电机控制。因此,除了理论,还需要提供实用的实现步骤、常见问题及解决方案,比如如何获取电机的位置信息(编码器或传感器),如何处理电流采样&#x…...