惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - Don

在Chrome中调试Android微信浏览器中的网页,不出现供选择页面的怎么办?(chrome://inspect/#devices) 使用Crontab集合sh脚本自动删除过期的Confluence Docker容器中的备份文件 Docker PHP中安装gd扩展并生成图形验证码 解决命令行提示“cannot create temp file for here-document: No space left on device”但磁盘使用率并未满的问题 SSH登录后提示LC_ALL: cannot change locale (en_US.UTF8) 的解决办法 解决git操作一直要求输入用户名和密码的问题 CentOS如何增加虚拟内存 RabbitMQ集群脑裂故障处理 zookeeper日志定时清理 Alibaba Centos ECS 安全更新记录 AWS EC2配置CloudWatch 记录AWS Linux2 的yum安全更新步骤 记录Docker系统盘空间占用过大的解决方法 AWS EC2 EBS数据盘挂载与相关日常维护操作 AWS Amazon Linux2 安装Docker和Docker Compose [转]提升 Docker Desktop For macOS 磁盘使用率 AndroidGetAPKInfo --- 检查包名(packageName)、版本(versionName\versionCode)、应用签名(Signature)等信息 - Don Linux下User与Group的常用操作命令解析 Docker搭建openvpn - Don
OpenSSL命令—pkcs12
Don · 2022-01-11 · via 博客园 - Don

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

分析选项:

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

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

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

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

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

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

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

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

-certpbealg:该选项允许指定证书的加密算法。任何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用“,“,其他系统用“:”。

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

-CAfile arg:指定CA文件。

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

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

-engine id:指定硬件引擎。

注意:

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

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

B<-keypbe> 和 B<-certpbe>算法允许明确的私钥加密算法和证书的详细说明。通常的默认是好的,但是偶尔的软件不能够处理经过3DES加密了的私钥。选项B<-keypbe PBE-SHA1-RC2-40>可以被用于减少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