用Python库pyOpenSSL读取iOS的p12证书!

用Python库pyOpenSSL读取iOS的p12证书 1、前言 本文主要是讲解如何用python读取p12的信息。 如果有过iOS团队开发经验的朋友,一定对p12有所了解,因为苹果开发者网站制作的cer证书,只能用生成上传苹果后台的CSR(Certificate Signing Request)文件 ————CertificateSigningRequest.certSigningRequest的macOS系统安装使用,同时,普通... 阅读详情

1、前言

本文主要是讲解如何用python读取 p12 的信息。

如果有过iOS团队开发经验的朋友,一定对 p12 有所了解,因为苹果开发者网站制作的cer证书,只能用生成上传苹果后台的 CSR (Certificate Signing Request)文件 ———— CertificateSigningRequest.certSigningRequest 的macOS系统安装使用,同时,普通个人开发账号最多可注册iOS Development/Distribution 证书各2个。所以, p12 就是解决在多个电脑之间共享证书的一种方式。本文不会详解iOS证书相关知识,可以查看本文末的参考链接。

2、p12证书

Python学习交流群:1004391443

 

在讲解之前,先给大家说说原理。 p12 — KCS12 file holds the private key and certificate. 个人信息交换(personal information exchange file)

p12 存放了证书和私钥,使用的是DER编码。那什么是DER呢? 这里就要讲讲证书的知识:

证书标准

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

编码格式

同样的 X.509 证书,可能有不同的编码格式,目前有以下两种编码格式:

  • DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
  • PEM - Privacy Enhanced Mail,打开看文本格式,以”—–BEGIN…”开头,”—–END…”结尾,内容是BASE64编码。

所以,要查看 p12 的内容,最好是转换成 PEM 格式。那么这里一种证书标准的格式,就需要实现了这种标准的工具就能解析:

  • OpenSSL - OpenSSL是 SSL 的一个实现,SSL只是一种规范。理论上来说,SSL这种规范是安全的,目前的技术水平很难破解,但SSL的实现就可能有些漏洞,如著名的”心脏出血”。OpenSSL还提供了一大堆强大的工具软件,强大到90%我们都用不到。

所以,使用 OpenSSL 就可以读取 p12 的信息,可以通过以下命令把 p12 转换为 pem :

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

执行命令后,会要求输入 p12 文件的密码,如果密码错误: Mac verify error: invalid password? ,如果密码正确: MAC verified OK 。

示例:

p12:

 

 

 

 

pem:

 

 

 

 

pyOpenSSL 使用

所以,python 解析 p12 可以使用 pyOpenSSL ,这里就没有什么多说的,看代码就好:

先安装 pyOpenSSL :

pip install pyOpenSSL

p12 文件读取代码:

# load OpenSSL.crypto
from OpenSSL import crypto
# open it, using password. Supply/read your own from stdin.
p12 = crypto.load_pkcs12(open("/Users/HTC/Desktop/HTC.p12", 'rb').read(), '123456')
cer = p12.get_certificate()     # (signed) certificate object
pkey = p12.get_privatekey()      # private key.
ca_cer = p12.get_ca_certificates() # ca chain.
print(cer, pkey, ca_cer)
print('版本', cer.get_version())
print('签名算法', cer.get_signature_algorithm())
print('序列号:', cer.get_serial_number())
print('证书是否过期:', cer.has_expired())
print('在此之前无效:', cer.get_notBefore())
print('在此之后无效', cer.get_notAfter())
#主题名称
subject = cer.get_subject()
s_components = subject.get_components()
print(s_components)
key_dict = {'UID': '用户 ID',
			'CN': '常用名称',
			'OU': '组织单位',
			'O': '组织',
			'C': '国家或地区'
			}
for (key, value) in s_components:
	print(key, value)
	print(key_dict.get(key.decode(), key))
#签发者名称
suer = cer.get_issuer()
print(suer.get_components())
#证书扩展信息
print('扩展数:', cer.get_extension_count())
print('扩展1:', cer.get_extension(0))

总结

现在 Xcode8 之后,已经可以通过登陆开发者账号,自动下载和管理证书,从而减少开发者配置证书遇到的各位问题,非常的方便。当然,如果是多人开发或跨域团队,或者不想让开发人员拿到最高权限,使用 p12 还是目前最好的方式!因为如果一个主账号下的子账号都可以操作证书,其实影响和安全性很难保证,所以,苹果也有一定道理,很难在Xcode的账号中,分权限管理吧。

关于证书,这里只是介绍的说说 p12 的简单知识,证书体系有非常多的标准和知识,还需要多学习多实战,加油! 

DigitalOcean DNS+Let’s Encrypt ECDSA自动化证书实践 HTTPS证书是现代Web服务的基础安全能力,其核心依赖于ACME协议实现的自动化签发与续期。DNS-01验证方式通过DNS记录控制权证明替代HTTP端口暴露,显著提升安全性与泛域名支持能力;ECDSA椭圆曲线算法在密钥体积、TLS握手性能和密码学强度上全面优于传统RSA,已成为云原生环境下的新事实标准。结合DigitalOcean提供的稳定DNS API与acme.sh轻量级ACME客户端,开发者可构建零人工干预、高兼容性、可审计回滚的证书生命周期管理体系,广泛适用于Next.js、WordPress、A 阅读详情

相关推荐

CentOS 7 下 Certbot standalone 模式申请 Let‘s Encrypt 证书全指南

Let’s Encrypt 是当前主流的免费 SSL/TLS 证书颁发机构,其核心验证机制基于 ACME 协议,通过 HTTP-01 或 DNS-01 挑战确认域名控制权。standalone 模式作为 Certbot 提供的原生验证方式,不依赖 Nginx/Apache 等 Web 服务器配置,而是由 Certbot 自启轻量 HTTP 服务响应 `/.well-known/acme-challenge/` 请求,实现验证逻辑与业务服务的完全解耦。该模式在 CentOS 7 环境中尤为可靠——它天然规避

weixin_33747129的博客 361

iOS通过p12导出公钥失败

通过p12文件导出证书crt文件一直报。

ADreamClusive的博客 858

Ubuntu 18.04 + Nginx + Let‘s Encrypt HTTPS 部署实战指南

HTTPS 是现代 Web 服务的基础安全要求,其核心是 SSL/TLS 协议实现的加密通信与身份验证。Let’s Encrypt 作为免费、自动化、受信任的证书颁发机构(CA),通过 ACME 协议实现域名所有权验证与证书生命周期管理,显著降低 HTTPS 落地门槛。相比自签名证书(无身份信任)或手动 OpenSSL 签发(运维成本高),Let’s Encrypt 结合 Certbot 客户端可实现一键申请、自动配置 Nginx 和零干预续期,技术价值在于将安全能力工程化、标准化。典型应用场景包括个人博客

weixin_34387468的博客 489

Useful Openssl Commands

Useful OpenSSL Commands Note: For printing purposes, you can SHOW ALL or HIDE ALL Instructions.OpenSSL is a very powerful cryptography utility, perhaps a li

happinux的专栏 3503

Ubuntu 16.04 下 Mosquitto TLS 部署全指南:解决 certificate_verify_failed 与 ssl vpn 兼容问题

MQTT 是物联网通信的核心轻量协议,但其本身不内置加密机制,依赖 TLS 实现传输安全。理解 TLS 握手原理、证书链验证逻辑及 OpenSSL 版本兼容性,是保障设备数据机密性与完整性的技术基础。在老旧系统如 Ubuntu 16.04 上,因 OpenSSL 1.0.2g 缺失 ALPN 支持、官方 Mosquitto 包禁用 TLS 等限制,极易触发 ssl: certificate_verify_failed 或 ssl vpn 设备握手失败等典型错误。本文聚焦生产级部署实践,覆盖从源码编译启用 W

mxdxm8899的专栏 566

Openssl - Win64 踩死坑

openssl是一个强大的安全套接字密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其他目的使用。openssl整个软件可以分为三个主要的功能部分:密码算法库、SSL协议库以及应用程序。 下载和安装openssl 安装openssl有两种方式,第一种是装上安装包即可运行;第二种是下载源码,自己编译。我选择最简单的方式作为介绍:使用openssl安...

人人为我,我为人人 1万+

用python写一个实现p12证书转换成.pem,.crt,.cer,.pfx格式的代码

用python写一个实现p12证书转换成.pem,.crt,.cer,.pfx格式的代码

weixin_45471729的博客 1515

QT编程系列1--QT学习前需知

本周学习了一些QT编程方面的知识,学写了几个程序,这里把记录下来。一方面对前面学习的知识做一个总结,便于以后复习、再学习和应用;另一方面也和大家做个交流,有不足的地方请各位看官多指点。   首先是做一些学习之前的交代:一,学习QT需要哪些基础;二,学习QT有哪些用途,QT较其他的开发工具有哪些特点;三,学习QT的思路。

霜月孤鸟&RTEMS&TinyOS 1117

根据证书文件查看证书信息

由于手贱,用了一个开源小工具的p12证书导致电脑网络间歇性癫疯,且他提供的证书直接改名成了“证书.p12”,没法在证书管理器里直接定位删除,所以尝试找了一些方法通过证书文件来查看证书安装后的名字。

Orchideous的博客 488

生存网络与mlr3proba

通过结合生存网络和mlr3proba,可以使用生存网络模型来预测个体在给定时间点发生事件的概率,并使用mlr3proba提供的工具进行模型的训练、评估和选择最佳模型。iii)基本的机器学习(ML)方法,如重新排序和调整。在本文中,我们将只讨论前五种,因为它们在文献中得到了更好的建立,并且它们具有相同的接口,这简化了调优,我们将在下面看到。我们不会为模型指定自定义架构,而是使用默认架构,如果你熟悉PyTorch,那么你可以选择创建自己的架构,如果你愿意的话,通过将其传递给模型中的custom_net参数。

weixin_46587777的博客 1364

RenderDoc实战:5分钟搞定安卓Vulkan应用抓帧(含常见连接失败排查)

本文详细介绍了如何使用RenderDoc工具对安卓Vulkan应用进行抓帧分析,包括环境配置、完整抓帧流程及常见连接问题的解决方案。通过实战案例和高级技巧,帮助开发者快速定位渲染问题和性能瓶颈,提升移动图形开发效率。

weixin_28318011的博客 285

Ubuntu 16.04下安全部署Mosquitto MQTT服务实战

MQTT是一种轻量级发布/订阅消息传输协议,广泛应用于物联网边缘通信场景;其核心安全机制依赖TLS加密传输与基于用户名/密码的访问控制。在老旧但仍在服役的Ubuntu 16.04系统上,由于OpenSSL 1.0.2g、systemd 219及ACME v1协议停用等历史约束,直接套用新版教程极易导致TLS握手失败、证书验证不通过或ACL权限失效。本文聚焦于该特定环境下的生产级安全基线构建:通过官方mosquitto 1.5.7二进制包、certbot-auto兼容ACME v2、Nginx反向代理终止TL

weixin_30706691的博客 723

无人飞行器和车辆的协同配送物资问题——附带MATLAB代码

通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们首先需要建立一个城市地图,包括物资点、无人飞行器的起始点和车辆的起始点。

CyberJolt的博客 951

【iOS】p12文件和mobileprovision文件导入到xcode如何使用

【iOS】p12文件和mobileprovision文件导入到xcode如何使用

微信公众号: 后端码匠 3256

48、基于头部电信号和触觉的人机交互技术研究

本文探讨了基于头部电信号控制决策和触觉感知的人机交互技术。通过EEG信号采集与ANN模型(TDNN/PRNN)分析,实现对用户意图的识别;同时利用触觉传感接口识别操作员有意接触,提升人机协作安全性。研究涵盖系统设计、数据处理流程、实验结果及技术拓展方向,并展望了两种技术在工业、医疗与智能家居等领域的融合应用前景。

i1j2k的博客 102

制作你自己的yolov5数据集并进行训练

项目地址:make-your-yolov5_dataset 一、数据集标注软件 labelImg labelMe 精灵标注助手 更多的标注工具你可以去看:深度学习图像标注工具汇总 、 十个最常用深度学习图像/视频数据标注工具 、 百度一下 在这里我选择使用labelImg 二、数据集标注 下载labelImg 解压,直接打开labelimg.exe labelImg标注数据 标注完成后即可获得VOC格式(生成.xml文件)的数据 目录结构: dataset │ ├─Annotations .

年少的勇气已经用完,剩下的就是三思而后行 1万+

OpenSSL 解析P12格式证书文件

1 解压openssl-0.9.8k_WIN32.zip 到 c:\根目录;解压文件夹如下; 2 打开控制台,并切换到OpenSSL可执行文件所在目录; 3 利用OpenSSL创建.p12测试文件(也就是证书制作过程);详细创建步骤如下; 3.1 生成ca私钥 [color=red]a) openssl dsaparam -out dsaparam 1024[/color...

Jacky_Dai的专栏 1934

分布式优化 (Distributed Optimization) 算法详解及案例分析

分布式优化是一种将优化问题分解为多个子问题并在多个计算节点上并行求解的方法。其目标是通过分布式计算资源高效地求解大规模优化问题。

闲人编程的博客 2713

p12解析流程_OpenSSL 解析P12格式证书文件

a) openssl dsaparam -out dsaparam 1024b) openssl gendsa -out dsakey dsaparam3.2 生成ca待签名证书openssl req -new -out ca-req.csr -key dsakey -config ..\openssl.cnf3.3用CA私钥进行自签名,得到自签名的CA根证书openssl x509 -req -...

weixin_32614533的博客 1731

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 886

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iOS证书(.p12)和描述文件(.mobileprovision)的导出和使用方法

为什么要导出.p12文件 当我们用大于三个mac设备开发应用时,想要申请新的证书,如果在我们的证书里,包含了3个发布证书,2个开发证书,可以发现再也申请不了开发证书和发布证书了(一般在我们的证书界面中应该只有一个开发证书,一个发布证书,没必要生成那么多的证书,证书一般在过期之后才会重新添加。) 如图: 这时候,再点击“+”时,就会发现点击不了开发和发布证书,也就是添加不了开发证书和发布证

ioshunjian的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PHP 使用P12加密文件注意事项

首先强调: PHP中是不支持使用P12文件加密的,所以我们可以把P12文件转换成我们可以使用的PEM文件格式就可以使用了。 具体步骤见下方: 我这里只要转换一次就能长期使用所以我是手动转换的 连接Linux服务器后 直接输入下方代码(文件名称是路径+文件名称) openssl pkcs12 -in 你的p12文件名称.p12 -out 需要生成的pem文件名称.pem -nodes 然后出现 “Enter Import Password:” 输入你的证书密码 我这里是直接成功的 然后

奥特曼不想打小怪兽 775

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VSCode无法登录leetcode,报[ERROR] invalid password?错误

VSCode无法登录leetcode,报[ERROR] invalid password?错误 v14.16.0 Active Name Version Desc √ solution.discuss 2019.02.03 Plugin to fetch most voted solution in discussions. √ company 2017.12.18 Plugin to query by company for free user. √ cache default Plugin to pro

blainet的博客 6877

ios开发证书CER文件、P12文件,mobileprovition许可文件的用途

1,开发证书 CER文件 这个文件的申请请去 http://blog.youkuaiyun.com/lanergaming/article/details/38784925

iPolaroid的专栏 3万+
上一篇: 你都用Python做过哪些骚操作?
下一篇: 结构不只有眼前的CAD,还有python和秀发!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值