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.rhkb.cn/news/10162.html

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

相关文章

SpringBoot整合Swagger UI 用于提供接口可视化界面

目录 一、引入相关依赖 二、添加配置文件 三、测试 四、Swagger 相关注解 一、引入相关依赖 图像化依赖 Swagger UI 用于提供可视化界面&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactI…

Nuxt:利用public-ip这个npm包来获取公网IP

目录 一、安装public-ip包1.在Vue组件中使用2.在Nuxt.js插件中使用public-ip 一、安装public-ip包 npm install public-ip1.在Vue组件中使用 你可以在Nuxt.js的任意组件或者插件中使用public-ip来获取公网IP。下面是在一个Vue组件中如何使用它的例子&#xff1a; <template…

QT串口通信,实现单个温湿度传感器数据的采集

1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::

【深度分析】DeepSeek 遭暴力破解,攻击 IP 均来自美国,造成影响有多大?有哪些好的防御措施?

技术铁幕下的暗战&#xff1a;当算力博弈演变为代码战争 一场针对中国AI独角兽的全球首例国家级密码爆破&#xff0c;揭开了数字时代技术博弈的残酷真相。DeepSeek服务器日志中持续跳动的美国IP地址&#xff0c;不仅是网络攻击的地理坐标&#xff0c;更是技术霸权对新兴挑战者的…

【漫话机器学习系列】068.网格搜索(GridSearch)

网格搜索&#xff08;Grid Search&#xff09; 网格搜索&#xff08;Grid Search&#xff09;是一种用于优化机器学习模型超参数的技术。它通过系统地遍历给定的参数组合&#xff0c;找出使模型性能达到最优的参数配置。 网格搜索的核心思想 定义参数网格 创建一个包含超参数值…

Transformer+vit原理分析

目录 一、Transformer的核心思想 1. 自注意力机制&#xff08;Self-Attention&#xff09; 2. 多头注意力&#xff08;Multi-Head Attention&#xff09; 二、Transformer的架构 1. 整体结构 2. 编码器层&#xff08;Encoder Layer&#xff09; 3. 解码器层&#xff08;Decoder…

【MySQL】MySQL客户端连接用 localhost和127.0.0.1的区别

# systemctl status mysqld # ss -tan | grep 3306 # mysql -V localhost与127.0.0.1的区别是什么&#xff1f; 相信有人会说是本地IP&#xff0c;曾有人说&#xff0c;用127.0.0.1比localhost好&#xff0c;可以减少一次解析。 看来这个入门问题还有人不清楚&#xff0c;其实…

爬虫基础(三)Session和Cookie讲解

目录 一、前备知识点 &#xff08;1&#xff09;静态网页 &#xff08;2&#xff09;动态网页 &#xff08;3&#xff09;无状态HTTP 二、Session和Cookie 三、Session 四、Cookie &#xff08;1&#xff09;维持过程 &#xff08;2&#xff09;结构 正式开始说 Sessi…

使用langchain ollama gradio搭建一个本地基于deepseek r1的RAG问答系统

目录 简介 环境配置 具体实现 安装依赖 定义模型和prompt 加载检索文档 切割 向量存储 创建检索器 实例化 前端搭建 实现效果 小tips 简介 首先介绍一下使用的几个工具&#xff0c;模型和rag的步骤&#xff0c;注&#xff1a;这里只是简单描述一下&#xff0c;不展…

android获取EditText内容,TextWatcher按条件触发

android获取EditText内容&#xff0c;TextWatcher按条件触发 背景&#xff1a;解决方案&#xff1a;效果&#xff1a; 背景&#xff1a; 最近在尝试用原生安卓实现仿element-ui表单校验功能&#xff0c;其中涉及到EditText组件内容的动态校验&#xff0c;初步实现功能后&#…

hive:基本数据类型,关于表和列语法

基本数据类型 Hive 的数据类型分为基本数据类型和复杂数据类型 加粗的是常用数据类型 BOOLEAN出现ture和false外的其他值会变成NULL值 没有number,decimal类似number 如果输入的数据不符合数据类型, 映射时会变成NULL, 但是数据本身并没有被修改 创建表 创建表的本质其实就是在…

《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》

文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…

【四川乡镇界面】图层shp格式arcgis数据乡镇名称和编码2020年wgs84无偏移内容测评

本文将详细解析标题和描述中提到的IT知识点&#xff0c;主要涉及GIS&#xff08;Geographic Information System&#xff0c;地理信息系统&#xff09;技术&#xff0c;以及与之相关的文件格式和坐标系统。 我们要了解的是"shp"格式&#xff0c;这是一种广泛用于存储…

数据分析系列--⑤RapidMiner进行关联分析(中文数据案例)

一、数据集 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 一、数据集 点击下载数据集shopping_basket.xlsx ,这个数据集专门使用中文数据来进行分析. 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 Ok,E…

拦截器快速入门及详解

拦截器Interceptor 快速入门 什么是拦截器&#xff1f; 是一种动态拦截方法调用的机制&#xff0c;类似于过滤器。 拦截器是Spring框架中提供的&#xff0c;用来动态拦截控制器方法的执行。 拦截器的作用&#xff1a;拦截请求&#xff0c;在指定方法调用前后&#xff0c;根…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…

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

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

大数据学习之Kafka消息队列、Spark分布式计算框架一

Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时&#xff0c;您以事件的 形式执行…

书生大模型实战营5

文章目录 L1——基础岛书生大模型全链路开源开放体系概览书生大模型全链路的数据书生大模型全链路的开源数据处理工具箱预训练 InterEvo微调 XTunerOpenCompass 评测体系部署 LMDeploy智能体 Lagent智能体 MindSearchHuixiangDou L1——基础岛 书生大模型全链路开源开放体系 …

Deepseek技术浅析(二):大语言模型

DeepSeek 作为一家致力于人工智能技术研发的公司&#xff0c;其大语言模型&#xff08;LLM&#xff09;在架构创新、参数规模扩展以及训练方法优化等方面都达到了行业领先水平。 一、基于 Transformer 架构的创新 1.1 基础架构&#xff1a;Transformer 的回顾 Transformer 架…