用途:

pkcs8格式的私钥转换工具。它处理在PKCS#8格式中的私钥文件。它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 PrivateKeyInfo格式和EncryptedPrivateKeyInfo格式。

用法:

openssl pkcs8 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename]
[-passout arg] [-topk8] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg] [-engine id]

选项说明:

-inform PEM|DER::输入文件格式,DER或者PEM格式。DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式。

-outform DER|PEM:输出文件格式,DER或者PEM格式。

-in filename:输入的密钥文件,默认为标准输入。如果密钥被加密,会提示输入一个密钥口令。

-passin arg:输入文件口令保护来源。

-out filename:输出文件,默认为标准输出。如果任何加密操作已经执行,会提示输入一个密钥值。输出的文件名字不能和输入的文件名一样。

-passout arg:输出文件口令保护来源。

-topk8:通常的是输入一个pkcs8文件和传统的格式私钥文件将会被写出。设置了此选项后,位置转换过来:输入一个传统格式的私钥文件,输出一个PKCS#8格式的文件。

-noiter:MAC保护计算次数为1。

-nocrypt:PKCS#8密钥产生或输入一般用一个适当地密钥来加密PKCS#8 EncryptedPrivateKeyInfo结构。设置了此选项后,一个不加密的PrivateKeyInfo结构将会被输出。这个选项一直不加密私钥文件,在绝对必要的时候才能够使用。某些软件例如一些JAVA代码签名软件使用不加密的私钥文件。

-nooct:这个选项产生的RSA私钥文件是一个坏的格式,一些软件将会使用。特别的是,私钥文件必须附上一个八位组字符串,但是一些软件仅仅包含本身的结构体没有使八位组字符串所环绕。不采用八位组表示私钥。

-embed:这个选项产生的RSA私钥文件是一个坏的格式。在私钥结构体中采用嵌入式DSA参数格式。在这个表单中,八位组字符串包含了ASN1 SEQUENCE中的两种结构:一个SEQUENCE包含了密钥参数,一个ASN1 INTEGER包含私钥值。

-nsdb:这个选项产生的RSA私钥文件是一个坏的格式并兼容了Netscape私钥文件数据库。采用NetscapeDB的DSA格式。

-v2 alg:采用PKCS#5 v2.0,并指定加密算法,默认的是PKCS#8私钥文件被叫做B<pbeWithMD5AndDES-CBC>(该算法用56字节的DES加密但是在PKCS#5 v1.5中有更加强壮的加密算法)的加密算法用口令进行加密。用B<-v2>选项,PKCS#5 v2.0相关的算法将会被使用,可以是des3(168字节)和rc2(128字节),推荐des3。

-v1 alg:采用PKCS#5 v1.5或pkcs12,并指定加密算法。可采用的算法见下面。

-engine id:指定硬件引擎。

注意:

加密了的PEM编码PKCS#8文件表单用下面的头部和尾部:

-----BEGIN ENCRYPTED PRIVATE KEY-----

-----END ENCRYPTED PRIVATE KEY-----

未加密的表单用:

-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

跟传统的SSLeay算法相比,用PKCS#5 v2.0系列的算法加密私钥,有更高的安全性以及迭代次数。于是附加的安全性是经过深思熟虑的。

默认的加密算法仅仅是56字节的,是因为它是PKCS#8所支持的最好的方法。

有一些软件使用PKCS#12基于密钥的加密算法来加密PKCS#8格式的私钥:它们会自动的处理但是没有选项来操作。

在PKCS#8格式中,有可能的是输出DER编码格式的经过加密的私钥文件,是因为加密的详细说明包含在DER等级中,相反的是传统的格式包含在PEM邓丽中。

PKCS#5 v1.5和 PKCS#12 算法:

各种各样的算法可以被选项-v1所使用。包含PKCS#5 v1.5和 PKCS#12 算法。详细描述如下:

B<PBE-MD2-DES PBE-MD5-DES>:这两个算法包含在PKCS#5 v1.5中。它们仅仅提供56字节的保护,加密算法用DES。

B<PBE-SHA1-RC2-64 PBE-MD2-RC2-64 PBE-MD5-RC2-64 PBE-SHA1-DES>:它们在传统的PKCS#5 v1.5中没有被提到,但是它们用同样地密钥引出算法,被一些软件所支持。在PKCS#5 v2.0中所提到。它们使用64字节的RC2以及56字节的DES。

B<PBE-SHA1-RC4-128 PBE-SHA1-RC4-40 PBE-SHA1-3DES PBE-SHA1-2DES PBE-SHA1-RC2-128 PBE-SHA1-RC2-40>:它们是PKCS#12基于密钥的加密算法,它们允许使用高强度的加密算法,例如3des或128位的RC2。

实例:

用3des算法将传统的私钥文件转换为PKCS#5 v2.0:

openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem

用PKCS#5 1.5兼容的DES算法将私钥文件转换为pkcs8文件:

openssl pkcs8 -in ocspserverkey.pem -topk8 -out ocspkcs8key.pem

用PKCS#12兼容的3DES算法将私钥文件转换为pkcs8文件:

openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES

读取一个DER格式加密了的PKCS#8格式的私钥:

openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem

转换一个PKCS#8格式的私钥到传统的私钥:

openssl pkcs8 -in pk8.pem -out key.pem

pkcs8中的私钥以明文存放:

openssl pkcs8 -in ocspserverkey.pem -topk8  -nocrypt -out ocspkcs8key.pem

标准:

PKCS#5 v2.0的测试向量的实现是以通告的形式用高强度的迭代次数算法3DES、DES和RC2来加密的。很多人要确认能够解密产生的私钥。

PKCS#8格式的DSA私钥文件没有备注文件中的:在PKCS#11 v2.01中的11.9节被隐藏了的。OpenSSL的默认DSA PKCS#8私钥格式隐藏在这个标准中。

BUGs:

必须有一个选项打印使用的加密算法的其他详细细节,例如迭代次数。

PKCS#8用3DES和PKCS#5 v2.0必须是默认的私钥文件:目前为了命令的兼容性。

OpenSSL命令---pkcs8的更多相关文章

  1. OpenSSL命令系列

    1.1 ssl命令系列前言 openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖 ...

  2. openssl命令实例

    基本知识 1,证书标准 X.509 X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. X.509的证书文件,一般以.cr ...

  3. (2) OpenSSL命令

    openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行 ...

  4. openssl命令用法

    openssl命令 配置文件:/etc/pki/tls/openssl.cnf 命令格式: openssl command [ command_opts ] [ command_args ] 众多子命 ...

  5. openssl命令行工具简介 - 指令x509

    原文链接: http://blog.csdn.net/allwtg/article/details/4982507 openssl命令行工具简介 - 指令x509 用法:           open ...

  6. 使用openssl命令剖析RSA私钥文件格式

    原文 https://blog.csdn.net/zhymax/article/details/7683925 Openssl提供了强大证书功能,生成密钥对.证书,颁发证书.生成crl.验证证书.销毁 ...

  7. 用OpenSSL命令行生成证书文件

    用OpenSSL命令行生成证书文件 1.首先要生成服务器端的私钥(key文件): openssl genrsa -des3 -out server.key 1024 运行时会提示输入密码,此密码用于加 ...

  8. (转)openssl 命令: openssl req 命令详解

                                      openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书.本文就主要记录一下open ...

  9. Openssl命令的使用

    用途: pkcs8格式的私钥转换工具.它处理在PKCS#8格式中的私钥文件.它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 Private ...

随机推荐

  1. Tomcat需要更改三个端口,才能在一台机器上搭载多个tomcat

    1.shutdown端口.port改成与原有的不同即可 2.8080端口,需要更改. 3.默认端口

  2. 关于用CSS3画图形的一些思考

    众所周知,用CSS3的圆角.转换可以画出各种不同的形状,制作不同的图案,早些前先驱者已画出经典的叮当猫,iphone手机等展示CSS3的强大实力,趁最近有空我也对CSS3进行了一些实践,颇有收获. 用 ...

  3. Hibernate SQL 方言(hibernate.dialect)

    RDBMS Dialect DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB ...

  4. 个性二维码开源专题<后背景>

    //设置图片资源 private Image img1; public override void SetParam() { base.SetParam(); //读取图片 string _image ...

  5. 编译nginx时提示undefined reference to 'pcre_free_study' 的问题及解决

    ./configure --add-module=../ngx_devel_kit-0.2.19/ --add-module=../lua-nginx-module-0.9.19/  --with-l ...

  6. C#过滤Html标签及空格

    public static string FilterHTML(string HTMLStr) { if (!string.IsNullOrEmpty(HTMLStr)) return System. ...

  7. 转:DataSet、DataTable、DataRow、DataColumn区别及使用实例

    DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的 ...

  8. AspNet MVC 缓存

    服务端缓存技术 请求域内的缓存 每个Asp.Net请求都会在Asp.Net框架中创建一个新的System.Web.HttpContext对象(HttpContext对象封装有关个别 HTTP 请求的所 ...

  9. mysql where执行顺序

    where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个. 在用MySQL查询数据库的时候,连接了很多个过滤条件 ...

  10. JS 日期格式化和解析工具

    本来想模仿Java里面的SimpleDateFormat()对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了. 原文链接 日期格式化 使用说明 formatDate(date, fmt ...