ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Python和shell命令 创建苹果证书

2021-12-07 19:59:18  阅读:209  来源: 互联网

标签:shell certificate 证书 Python FILETYPE req PEM p12 key


通过Python和shell生成证书

之前在linux通过 openssl 创建证书,格式转换,超级方便,但是迁移到Python,就有更多选择了

Python库中 有好多关于证书的一些类库 本次是通过 OpenSSL.crypto 这个库来进行操作

代码是基于Python3.6的环境

制作key或者csr证书

from OpenSSL.crypto import (dump_certificate_request, dump_privatekey, PKey, TYPE_RSA, X509Req, FILETYPE_PEM)

def make_csr_content(csr_file_path, private_key_path):
    # create public/private key
    key = PKey()
    key.generate_key(TYPE_RSA, 2048)
    # Generate CSR
    req = X509Req()
    req.get_subject().CN = 'FLY APP'
    req.get_subject().O = 'FLY APP Inc'
    req.get_subject().OU = 'IT'
    req.get_subject().L = 'BJ'
    req.get_subject().ST = 'BJ'
    req.get_subject().C = 'CN'
    req.get_subject().emailAddress = 'flyapps@126.com'
    req.set_pubkey(key)
    req.sign(key, 'sha256')
    csr_content = dump_certificate_request(FILETYPE_PEM, req)
    with open(csr_file_path, 'wb+') as f:
        f.write(csr_content)
    with open(private_key_path, 'wb+') as f:
        f.write(dump_privatekey(FILETYPE_PEM, key))

    return csr_content

换成在linux下,openssl命令如下

openssl genrsa -out aps_development.key 2048
openssl req -new -sha256 -key aps_development.key -out aps_development.csr

果然linux命令很精简,很强大

生成pem证书

既然已经有了csr证书,拿着证书去苹果开发者平台,得到 cer证书,这个在Python是如何操作的呢?

from OpenSSL.crypto import (FILETYPE_PEM, load_certificate, FILETYPE_ASN1, dump_certificate)

def make_pem(cer_content, pem_path):
    cert = load_certificate(FILETYPE_ASN1, cer_content)
    with open(pem_path, 'wb+') as f:
        f.write(dump_certificate(FILETYPE_PEM, cert))

对应的shell命令如下:

openssl x509 -inform DER -outform PEM -in aps_development.cer -out aps_development.pem

p12证书生成

既然key和cert都有了,那么,p12证书也可以出来了

Python代码如下

from OpenSSL.crypto import (FILETYPE_PEM, load_certificate, load_privatekey, PKCS12)


def export_p12(pem_file, key_file, p12_file, password):
    certificate = load_certificate(FILETYPE_PEM, open(pem_file, 'rb').read())
    private_key = load_privatekey(FILETYPE_PEM, open(key_file, 'rb').read())
    p12 = PKCS12()
    p12.set_certificate(certificate)
    p12.set_privatekey(private_key)
    with open(p12_file, 'wb+') as f:
        f.write(p12.export(password))

对应shell 命令如下,记得要输密码

openssl pkcs12 -inkey aps_development.key -in aps_development.pem -export -out aps_development.p12 

标签:shell,certificate,证书,Python,FILETYPE,req,PEM,p12,key
来源: https://blog.csdn.net/ly1358152944/article/details/121776916

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有