OpenSSL命令—pkcs12

用途:

pkcs12文件工具,能生成和分析pkcs12文件。PKCS#12文件可以被用于多个项目,例如包含Netscape、MSIE和MS Outlook。

用法:

openssl pkcs12 [-export] [-chain] [-inkey filename] [-certfile filename] [-CApath arg] [-CAfile arg]
[-name name] [-caname name] [-in filename] [-out filename] [-noout] [-nomacver] [-nocerts]
[-clcerts] [-cacerts] [-nokeys] [-info] [-noiter] [-maciter] [-nomaciter] [-nomac] [-twopass] [-descert]
[-certpbe alg] [-keypbe alg] [-macalg digest] [-keyex] [-keysig] [-password arg] [-passin arg] [-passout arg]
[-rand file(s)] [-LMK] [-CSP name][-engine e] [-des] [-des3] [-aes128] [-aes192] [-aes256] [-idea]
[-camellia128] [-camellia192] [-camellia256] [-nodes]

选项说明:

PKCS#12文件在创建或分析的时候要依赖有一些选项。默认的是分析一个PKCS#12文件。一个PKCS#12文件可以用B选项来创建。

分析选项:

-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。

-out filename:指定输出的pkcs12文件,默认为标准输出。

-password arg:指定导入导出口令来源。

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

-passout arg:指定所有输出私钥保护口令来源。

-noout:不打印参数编码的版本信息。

-clcerts:仅仅输出客户端证书,不输出CA证书。

-cacerts:仅仅输出CA证书,不输出客户端证书。

-nocerts:不输出任何证书。

-nokeys:不输出任何私钥信息值。

-info:输出PKCS#12文件结构的附加信息值。例如用的算法信息以及迭代次数。

-des:在输出之前用DES算法加密私钥值。

-des3:在输出之前用3DES算法加密私钥值。此项为默认。

-idea:在输出之前用IDEA算法加密私钥值。

-aes128、-aes192、-aes256:在输出之前用AES算法加密私钥值。

-camellia128、-camellia192、-camellia256:在输出之前用camellia算法加密私钥值。

-nodes:一直对私钥不加密。

-nomacver:读取文件时不验证MAC值的完整性。

-twopass:需要用户分别指定MAC口令和加密口令。

文件创建选项:

-export:这个选项指定了一个PKCS#12文件将会被创建。

-in filename:指定私钥和证书读取的文件,默认为标准输入。必须为PEM格式。

-out filename:指定输出的pkcs12文件,默认为标准输出。

-inkey filename:指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定。

-name name:指定证书以及私钥的友好名字。当用软件导入这个文件时,这个名字将被显示出来。

-certfile filename:添加filename中所有的证书信息值。

-caname name:指定其它证书的友好名字。这个选项可以被用于多次。

-password arg:指定导入导出口令来源。

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

-passout arg:指定所有输出私钥保护口令来源。

-chain:如果这个选项被提出,则添加用户证书的证书链。标准CA中心用它来搜索。如果搜索失败,则是一个重大的错误。

-descert:用3DES对PKCS12进行加密,这样杨浦可能会导致PKCS12文件被一些”export grade”软件不能够读取。默认的是用3DES对私钥文件进行加密,用40位的RC2对证书公钥文件进行加密。

-certpbe alg:该选项允许指定证书的加密算法。任何PKCS#5 v1.5或PKCS#12 PBE类型的算法都可以被使用。默认使用的是40位的RC2。

-keypbe alg:该选项允许指定证书私钥的加密算法。任何PKCS#5 v1.5或PKCS#12 PBE类型的算法都可以被使用。默认使用的是3DES。

-keyex:设置私钥仅仅被用于密钥交换。

-keysig:设置私钥仅仅被用于数字签名。

-macalg digest:指定MAC摘要算法。如果没有被指定,则默认使用sha1。

-nomaciter、-noiter:这个选项影响MAC值和密钥算法的迭代次数。除非你希望产生的文件能与MSIE 4.0相兼容,可以把这两个选项丢弃一边。

-maciter:加强完整性保护,多次计算MAC。

-nomac:不去规定MAC值的完整性。

-rand file(s):指定随机数种子文件,多个文件间用分隔符分开,windows用”;”,OpenVMS用”,”,其他系统用”:”。

-CApath arg:指定CA目录。该目录必须是一个标准证书目录:每个CA文件的文件名为XXXX.0,XXXX为其持有者摘要值。

-CAfile arg:指定CA文件。

-LMK:添加本地的机械属性到私钥中。

-CSP name:微软的CSP的名字。

-engine id:指定硬件引擎。

注意:

有一大部分选项将不会使用。对PKCS#12文件来说,仅仅B和B需要被使用。对文件创建来说,B和B使用。

如果B、B或B没有存在,所有的证书将会被依附到PKCS#12文件将会被输出。没有保证的是提出的第一个证书不一定匹配私钥。某些软件需要一个私钥和证书,来承担在文件中的第一个证书匹配私钥:经常没有这种情况。用B选项能够解决问题,因为这个选项要输出与私钥文件相匹配的证书。如果CA证书是必需的,用B选项来输出文件,仅仅输出CA证书。

B和B算法允许明确的私钥加密算法和证书的详细说明。通常的默认是好的,但是偶尔的软件不能够处理经过3DES加密了的私钥。选项B可以被用于减少40字节的RC2私钥加密。一个完整的所有算法的描述包含在B手册中。

实例:

分析一个PKCS#12文件和输出到文件中:

openssl pkcs12 -in file.p12 -out file.pem

仅仅输出客户端证书到文件中:

openssl pkcs12 -in file.p12 -clcerts -out file.pem

不加密私钥文件:

openssl pkcs12 -in file.p12 -out file.pem -nodes

打印PKCS#12格式的信息值:

openssl pkcs12 -in file.p12 -info -noout

生成pkcs12文件,但不包含CA证书:

openssl pkcs12 -export -inkey ocspserverkey.pem -in ocspservercert.pem  -out ocspserverpkcs12.pfx

生成pcs12文件,包含CA证书:

openssl pkcs12 -export -inkey ocspserverkey.pem -in ocspservercert.pem -CAfile demoCA/cacert.pem -chain -out ocsp1.pfx

将pcks12中的信息分离出来,写入文件:

openssl pkcs12 –in ocsp1.pfx -out certandkey.pem

显示pkcs12信息:

openssl pkcs12 –in ocsp1.pfx -info

BUGS:

有一些争论是PKCS#12的标准是一个大的BUG。

OpenSSL 0.9.6a以前的版本在PKCS#12的产生过程中有一个bug。在稀有的情况下用一个无效的密钥来加密并产生PKCS#12文件。这样做的结果是一些PKCS#12文件被其它的应用程序(MSIE或Netscape)会触发这个bug。因为他们不会被OpenSSL或相似的OpenSSL在产生PKCS#12文件时不能够被加密。产生的通道相当的小:在256中比1还小。

一方面这个Bug的固定影响是老的无效的加密了的PKCS#12文件不能够被固定的版本所分析。在这种情况下,B会报告’ the MAC is OK but fail with a decryption error when extracting private keys’错误。

这个问题的解决方法是用老的OpenSSL版本从PKCS#12中来提起私钥文件和证书,用新的版本、提取到的证书、私钥来重新创建PKCS#12文件。例如:

old-openssl -in bad.p12 -out keycerts.pem
openssl -in keycerts.pem -export -name "My PKCS#12 file" -out fixed.p12

Original: https://www.cnblogs.com/pangblog/p/3424217.html
Author: pangbangb
Title: OpenSSL命令—pkcs12

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552922/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 全新升级的AOP框架Dora.Interception[3]: 基于特性标注的拦截器注册方式

    在Dora.Interception(github地址,觉得不错不妨给一颗星)中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上。本篇文章介绍最常用的基于”特性…

    技术杂谈 2023年5月31日
    073
  • 天池学习赛–贷款违约预测

    贷款违约预测 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解…

    技术杂谈 2023年7月23日
    084
  • Ansible的介绍与安装

    Ansible的介绍与安装 1、自动化与linux系统管理(为什么要学习自动化运维) ​ 大多系统管理和基础架构管理都依赖于通过图形或者命令行用户界面执行的手动任务,系统管理员通常…

    技术杂谈 2023年6月21日
    0119
  • ArrayList和LinkedList的区别

    ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。 L…

    技术杂谈 2023年5月30日
    075
  • linux指定端口失效原因分析

    在搭建centos7系统后开启防护墙,防火墙状态为active(开启), firewall-cmd –zone=public –add-port=8080/…

    技术杂谈 2023年6月21日
    089
  • JDBC事务–自动提交

    通过MYSQLIO执行IO操作。 commit=true/false,代码执行是一样的,都flush出去了,只是服务器端没有执行。 package com.zhuguang.jac…

    技术杂谈 2023年5月30日
    0100
  • 71.底细

    dfs posted @2022-09-28 08:47 随遇而安== 阅读(6 ) 评论() 编辑 Original: https://www.cnblogs.com/55zjc…

    技术杂谈 2023年6月21日
    094
  • Android so(ELF)文件解析

    一、前言 so文件是啥?so文件是elf文件,elf文件后缀名是 .so ,所以也被chang常称之为 so文件,elf文件是linux…

    技术杂谈 2023年7月10日
    085
  • 浅说正则——会了就不会忘

    闲来无事,看了看新浪最近的面试题,其中关于正则的题目,让自己意识到了这一块的薄弱。 闲来无事,搜集了很多资料(ps:三中全会这几天,用google特慢,不得以用bd,不说了,你懂得…

    技术杂谈 2023年5月31日
    084
  • 羊了个羊,但是Python简(li)单(pu)版

    大家好,欢迎来到 Crossin的编程教室 !要说最近最热门的游戏,那肯定是《羊了个羊》没跑了。 连续上了好几天热搜,火到连央视都来提醒谨防有人利用游戏之名诈骗。但游戏爆火的另一面…

    技术杂谈 2023年7月25日
    095
  • AOP实现系统告警

    工作群里的消息怕过于安静,又怕过于频繁 一、业务背景 在开发的过程中会遇到各种各样的开发问题,服务器宕机、网络抖动、代码本身的bug等等。针对代码的bug,我们可以提前预支,通过发…

    技术杂谈 2023年7月24日
    068
  • After Effects 教程,如何在 After Effects 中使用图层创建透明效果?

    Original: https://www.cnblogs.com/123ccy/p/16550989.htmlAuthor: -Mac123-Title: After Effec…

    技术杂谈 2023年5月31日
    099
  • 计算机中内存、cache和寄存器之间的关系及区别

    寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。…

    技术杂谈 2023年7月23日
    060
  • 特定声音识别检测模块详解

    一 需求分析 对于养宠物的人来说,识别宠物的叫声并根据它的叫声来判断是否出现了异常。宠物叫声一般都比较单一,难度相对较低,准确性有保障。 病人健康检测:通过声音识别,可以检测出人夜…

    技术杂谈 2023年5月31日
    0110
  • linux手动挂载硬盘没有移到回收站解决方法

    linux 手动挂载硬盘没有移到回收站解决方法 修改挂载硬盘的文件夹权限为当前用户即可 或者 修改读写权限 chmod 777 mount-disk-path Original: …

    技术杂谈 2023年7月24日
    062
  • 除了影响因子 还有哪些指标可以评价论文的价值

    除了影响因子,还有哪些指标可以评价论文的价值?一提起论文价值,恐怕首先想到的是影响因子。尤其是在中国,影响因子对于科研人员和工作者真是命根,晋级,升迁,申请基金,评奖等等无不与影响…

    技术杂谈 2023年5月31日
    095
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球