如何通过App Store Connect API生成证书?自动生成CSR内容方法
自动生成CSR用于App Store Connect API的方法
完全可以通过命令行工具或编程语言自动生成CSR,无需手动操作,以下是两种常用方案:
一、使用OpenSSL命令行(跨平台,适合脚本自动化)
OpenSSL是绝大多数系统自带的工具,可快速生成符合要求的CSR:
- 生成RSA私钥(无密码,适合自动化流程)
openssl genrsa -out ios_distribution.key 2048
- 生成CSR(一次性指定所有信息,无交互)
替换-subj后的字段为你的实际信息:
openssl req -new -key ios_distribution.key -out ios_distribution.csr -subj "/CN=你的名称/C=CN/ST=你的省份/L=你的城市/O=你的公司名/OU=你的团队名"
字段说明:
CN:常用名称(如个人姓名或公司名称)C:两位国家代码(如CN表示中国,US表示美国)ST:省份/州L:城市O:组织/公司名称OU:组织单元/团队名称
- 提取纯净的CSR内容(直接输出可填入API的Base64字符串)
openssl req -in ios_distribution.csr -noout -text | awk '/BEGIN CERTIFICATE REQUEST/,/END CERTIFICATE REQUEST/{if(/BEGIN/){next}if(/END/){next}print}' | tr -d '\n'
执行后得到的字符串就是csrContent需要的值。
二、使用Python代码生成(适合嵌入自动化程序)
借助cryptography库可以在代码中完成CSR生成,步骤如下:
- 先安装依赖:
pip install cryptography
- 示例代码:
from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization, hashes from cryptography.x509.oid import NameOID from cryptography import x509 import base64 # 生成2048位RSA私钥 private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048, ) # 可选:保存私钥到本地(后续更新证书需要用到) with open("ios_distribution.key", "wb") as f: f.write(private_key.private_bytes( encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption() )) # 构造CSR主题信息,替换为你的实际数据 subject = x509.Name([ x509.NameAttribute(NameOID.COUNTRY_NAME, "CN"), x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "广东省"), x509.NameAttribute(NameOID.LOCALITY_NAME, "深圳市"), x509.NameAttribute(NameOID.ORGANIZATION_NAME, "我的公司"), x509.NameAttribute(NameOID.COMMON_NAME, "我的名字"), ]) # 生成CSR并签名 csr = x509.CertificateSigningRequestBuilder().subject_name( subject ).sign(private_key, hashes.SHA256()) # 处理成API需要的csrContent格式(去除PEM标记和换行) pem_csr = csr.public_bytes(serialization.Encoding.PEM).decode() csr_content = pem_csr.replace("-----BEGIN CERTIFICATE REQUEST-----", "").replace("-----END CERTIFICATE REQUEST-----", "").replace("\n", "") print(csr_content)
运行代码后,控制台输出的字符串即可直接填入API请求的csrContent字段。
内容的提问来源于stack exchange,提问作者dev radwa
相关产品推荐
相关产品推荐

