搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
NLP-文本蕴含(文本匹配):概述【单塔模型、双塔模型】_文本蕴含任务
2
java 字符串分词_Java实现的双向匹配分词算法示例
3
代码编译安全之classfinal-maven-plugin插件
4
手把手教程 | 使用无服务器模板部署机器学习模型_离线服务器上部署机器学
5
chatgpt 谷歌开源免费语言模型、本地部署、离线使用
6
装饰工程管理系统|基于Springboot的装饰工程管理系统设计与实现(源码+数据库+文档)
7
SQL server数据库端口访问法_sql server连接字符串带端口
8
蓝桥杯练习——基础篇(10)_蓝桥杯编程竞赛指南第一章第十节
9
操作系统面试题总结(2022最新版)_面试后端岗位,操作系统问什么
10
批量打印,支持灵活按需筛选
当前位置:
article
> 正文
密码学专题 OpenSSL标准转换指令_sm2的私钥如何使用openssl命令将其转换为pkcs8格式
作者:很楠不爱3 | 2024-04-08 21:32:25
赞
踩
sm2的私钥如何使用openssl命令将其转换为pkcs8格式
概述
繁多复杂的各种文件编码格式、证书格式和密钥格式等。事实上,并非OpenSSL开发者想要将数字世界弄得如此令人头疼,只是由于各种原因,数字世界存在各种不同的标准,为了尽量兼容这些不同的标准,OpenSSL开发者才相应地在其指令和代码中支持如此多的格式。
日常使用会面临处理这些不同标准之间相互兼容和转换的问题,比如将X.509证书转换成PKCS#12格式证书就是常见的任务。事实上,在OpenSSL的很多指令中提供了不同格式和标准之间的转换功能
本章将集中介绍pkcs8和nseq指令的使用及其相关的标准
PKCS#8标准简介
相对于其他标准,PKCS#8标准算是一个非常简单的标准了,它主要
用于封装私钥和其他相关的属性信息
。一般来说,PKCS#8格式的
私钥都是被加密的
,支持
PKCS#5和PKCS#12标准定义的算法
,当然,私钥也可以不加密。
PKCS#8标准一方面可以增强私钥的安全性,另一方面也为用户
提供了一种简单的确立信任关系的方式
,这主要是基于私钥特别名称和最高层可信者的权威公钥等属性信息。
pkcs8指令介绍
功能概述和指令格式
OpenSSL提供了pkcs8指令来执行PKCS#8标准相关的工作。它可以把私钥转化为PKCS#8的格式,也可以把PKCS#8格式的私钥转换成其他存储标准的格式。OpenSSL的pkcs8指令对加密和非加密格式的私钥都能进行处理,其支持的加密算法有PKCS#5(版本1.5和2.0)和PKCS#12两种标准的定义。OpenSSL提供的经过PEM编码的PKCS#8标准的文件,分为加密和非加密两种方式。
PKCS#8文件生成选项topk8
默认情况下,pkcs8指令会要求输入一个PKCS#8格式的密钥,并将其进行处理后转换成普通格式的密钥输出并存储,这种情况一般用于处理或者显示一个已经存在的PKCS#8密钥的内容。如果使用了topk8选项,则pkcs8指令会将输入的一个普通格式的密钥转换成PKCS#8标准封装的密钥并输出。
输入输出选项in,out,inform和outform
in选项指定了输入密钥的文件名,默认情况下使用标准输入。如果输入的密钥是经过加密的,那么在读取密钥信息的过程中会提示输入加密口令。当然,如果你已经使用passin选项提供了加密口令,该提示信息就不会再出现。
out选项指定了存储输出密钥信息的文件名,默认情况下是标准输出。如果选择了加密选项而又没有使用pasout选项指定加密口令时,在输出密钥时会提示输入加密口令。输出文件与输入文件在同一个文件夹下时不可以重名,否则生成的文件会在没有读原密钥文件之前覆盖原文件,出现读密钥错误。
inform和outform选项分别指定了输入和输出文件的编码格式,支持的格式包括PEM和DER两种。
加密口令输入选项passin和passout
由于私钥的重要性,所以一般都使用了加密保护,加密保护使用的密钥和初始向量是从用户提供的口令中提取出来的,所以在使用密钥的时候也需要提供相同的口令进行密钥的解密。
passin和passout选项分别指定了输入和输出密钥时进行加解密的口令源。
如果输入的密钥文件需要口令进行解密而却没有使用pasin选项提供口令,那么程序会在指令行提示用户输入解密口令。
私钥
格式选项nocrypt,nooct,embed和nsdb
使用pkcs8指令时,通常情况下输入或是产生的PKCS#8格式的密钥都是使用口令基于某种算法加密的私钥信息结构。
如果使用nocrypt选项,则告诉指令其输入和产生的私钥都将是不经加密的私钥信息结构。私钥不进行加密,显然安全性会大大降低,所以除非万不得已,一般不推荐使用此选项。
nooct选项用于产生一种非标准格式的RSA私钥,以兼容一些软件。RSA私钥一般明确要求被封装到一个OCTETSTRING字符串内。但是有些软件只能识别私钥自身,对附加的OCTETSTRING字符串不能识别。在这种情况下,就可以使用nooct选项去掉OCTETSTRING字符串。
embed选项用于产生一种非标准格式的DSA密钥。在这种格式中,DSA参数内嵌到PrivateKey结构中。
nsdb选项则用于产生一种兼容Netscape私钥数据库格式的DSA密钥。
密钥
加密算法选项v2和v1
v1选项
用于选择PKCS#5v20中的所有算法。一般情况下,PKCS#8结构的私钥是使用pbeWithMD5AndDES-CBC这种口令加密算法加密的。虽然这种算法只使用了56bit的DES加密,但已经是PKCS#5v1.5中加密强度最高的算法。
使用v2选项则可以选择PKCS#5v2.0中更高强度的算法,这些算法有168bit的3DES或者128bit的RC2等。目前的软件支持PKCS#5v2.0的不多,但是如果你使用的范围都局限于OpenSSL,那么就一点问题都没有。
v2选项有效的参数包括des,des3和rc2,OpenSSL推荐读者使用DES3这种加密算法。v1选项用于选择PKCS#5v1.5或者PKCS#12中定义的算法,事实上,也包含了部分PKCS#5v2.0中定义的算法。
表11-1列出了v1选项可以使用的参数及其含义。
engine选项
如果engine选项指定了有效的Engine设备,那么指令中任何该Engine设备支持的上述操作都会使用Engine设备的操作流程而不再使用OpenSSL算法库本身提供的函数。
对于pkcs8指令来说,可以使用engine设备的操作主要包括RSA或者DSA密钥产生和对私钥进行加解密的算法。
例子
Netscape证书标准
为了方便下载一系列的证书,尤其对于为了验证要下载一个证书链的情况,Netscape提供了一种名为Netscape证书序列(Netscape Certificate Sequence)的格式来封装一系列证书(事实上,里面采用了一个PKCS#7格式来封装证书),以便能够一次性地下载或者传输多个数字证书。
所以,某些时候,Netscape证书序列可以替代PKCS#7的作用,用来打包一系列证书。Netscape证书序列虽然不一定能够得到微软的支持,但是在其他一些开源软件和Linux软件中却得到了广泛的支持,我们也因此随时会面临要把普通的一些证书封装成Netscape证书序列的要求和任务。
OpenSSL显然也考虑到了这些可能出现的问题,于是提供了本节要介绍的nseq指令。
功能概述和指令格式
nseq指令的任务简单而明确:将普通X.509证书封装成Netscape证书序列,或者将Netscape证书序列转换成普通的X.509证书。
这个指令的格式简单,也容易掌握,其格式为:
输入和输出文件选项in和out
in和out选项分别指定了输入和输出的文件名,默认是标准的输入和输出设备。
转化格式选项toseq
使用toseq选项告诉指令执行将一个或者多个普通X.509证书转换成一个Netscape证书序列的操作。如果不使用该选项,即默认情况下,输入的应该是一个Netscape证书序列文件,而输出的是一个或者多个普通X.509证书,当然,它们都存储在一个输出文件中。
例子
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/388341
推荐阅读
article
模拟
实现
strcpy
函数
的
实现
(含多次
优化
思想)
_
strcpy
实现
...
strcpy
函数
的
多次
优化
,进来认真看完保证收获满满。
_
strcpy
实现
strcpy
实现
...
赞
踩
article
智鹰
科技——
无人机
线路
巡检
系统商业
计划书
_路桥
巡检
无人机
创业
计划书
...
智鹰
科技——
无人机
线路
巡检
系统商业
计划书
第一章 执行总结1.1 项目背景1.2 产品介绍1.3 市场分析1.4 竞争分析...
赞
踩
article
中国剩余定理
_
同余式
的
解
遍历...
中国剩余定理:设m1,…,mk是k个两两互素
的
正整数,则对任意
的
整数b1,…,bk,
同余式
组:x ≡ b1 (mod m...
赞
踩
article
【
1day
】
致远
OA
漏洞
wpsAssistServlet
接口任意文件上传
漏洞
学习_
致远
oa wpsa...
2022护网新爆出的
致远
OA
wpsAssistServlet
接口存在任意文件上传
漏洞
,攻击者通过
漏洞
可以发送特定的请求...
赞
踩
article
【
LeetCode
】
2022
7
月
每日
一
题
_选数游戏(
每日
一
题
2022
-
7
-3)...
记录一下 leetcode
2022
7
月
每日
一
题
_选数游戏(
每日
一
题
2022
-
7
-3)选数游戏(
每日
一
题
2022
...
赞
踩
article
Xms
Xmx
PermSize
Max
PermSize
区别_
xnxhd
...
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of t...
赞
踩
article
C#
SM2
加解密
...
C#
SM2
加解密
_c# sm2c# sm2
SM2
是国家密码...
赞
踩
article
【辐射场】
3D
Gaussian
Splatting
_
3dgs
...
慢慢扯一点 没什么数学/代码含量_
3dgs
3dgs
三维高斯…喷...
赞
踩
article
openssl
+
SM2
+
linux
签名
开发实例(C++)_
linux
中
sm2
的加密...
SM2
签名
使用消息摘要算法对原始消息进行哈希,通常采用SM3算法。_
linux
中
sm2
的加密
linux
中
sm2
的加密...
赞
踩
article
基于
GitHub
代码库训练模型本地化AI代码自动补全 -
Tabby
Linux
Debian
/Ce...
即对内部代码安全性要求很高时,可以采取
Tabby
项目模型的本地化部署,不用担心本地项目代码隐私泄露,同时有很好的享受Gi...
赞
踩
article
【C
语言
】模拟
实现
字符串
函数
——
str
c
py
_
c
语言
实现
str
c
py
的功能...
模拟
实现
字符串
函数
之
str
c
py
函数
_
c
语言
实现
str
c
py
的功能
c
语言
实现
str
c
py
的功能 ...
赞
踩
article
Android
项目Gradle: Download
gradle
-
6.5
-
bin
.
zip
一直卡住解决...
1、首先停止
gradle
的下载,通过迅雷或浏览器将
gradle
下载下来,下载地址为 https://services.g...
赞
踩
article
sinx
的
泰勒
展开
式_
sinx
泰勒
展开
...
sinx
的
泰勒
展开
式求解过程思路:sin x 可以如何 “
展开
”?写成式子就是:最后以省略号结束,代表 “ 无穷 ”...
赞
踩
article
这个
AI
换衣
项目
也太惊艳
了
吧
,
看完我整个人都不好
了
!_
ootdiffusion
是
谁
研发
的
...
以上老秦介绍
了
AI
虚拟试衣技术和OOTDiffusion
的
本地部署
,
老秦之前就部署过
,
也踩
了
一些坑
,
所以这次部署比较顺利...
赞
踩
article
基于
hadoop
的电商
销售
预测分析系统
HDFS
+MapReduce+
springboot
或sprin...
基于
hadoop
的电商
销售
预测分析系统_基于
hadoop
销售
数据分析
基于
hadoop
销售
数据分析
...
赞
踩
article
pycharm
和
Spyder
多行注释
快捷键
...
2.
pycharm
:使用Ctrl+/3.
Spyder
:使用Ctrl+1。
pycharm
和
Spyder
多行注释
快捷键
...
赞
踩
article
毕业
设计
基于
STM32
的四轴
飞行器
设计
(源码+硬件+论文)_
stm32
飞控
程序...
stm32
飞控
程序 文章目录 0 前言1 用到的器件2 硬件...
赞
踩
article
Gitee
上又来了一波最新的
人工智能
开源
项目
,
不妨来看看?_
gitee
ai
开源
...
最近
Gitee
上又有不少优质的
人工智能
开源
项目
被推荐
,
从语义分析到计算机视觉
,
总有一款是你的菜
,
一起来看看吧。1.B...
赞
踩
article
E: 无法下载
https
://
download
.
docker
.com/
linux
/
ubuntu
/d...
E: 无法下载
https
://
download
.
docker
.com/
linux
/
ubuntu
/dists/Xenia...
赞
踩
article
docker
-
compose
安装(
国内
镜像)_
docker
-
compose
国内
镜像...
sudo curl -L "https://get.daocloud.io/
docker
/
compose
/release...
赞
踩
相关标签
c++
开发语言
无人机
线路巡检
学习
leetcode
算法
刷题
c#
3d
三维重建
linux
opessl
sm2
python
人工智能
机器学习
AIGC
github
c语言
android
android studio
gradle