ios企业证书导出的P12和对应的描述文件,可以签名ipa吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios企业证书导出的P12和对应的描述文件,可以签名ipa吗?相关的知识,希望对你有一定的参考价值。

ios企业证书导出的P12和对应的描述文件,可以签名ipa吗?

直接导出来的证书有可能只有公钥 所以没有签名功能的——资讯由提供代码签名证书的WOSIGN提供 参考技术A 可以,一样能打包 参考技术B

苹果企业签名就是通过iOS企业证书来给IPA文件进行签名,然后让IPA文件安装到苹果设备上的。

苹果企业签名如何安装IPA文件

如果想了解具体过程可以查看这篇文章,希望对你有帮助。

参考技术C 当然肯定可以啊
但是一定要保证是企业账号生成的才是企业证书的哦
我这里做的就是企业的 点我名字提问好了
参考技术D 客户如果是原生APP打包,仅需要在Xcode中,点击archive,选择ad hoc版,将ipa导出发给我们的在线客服,仅需十分钟时间,客服就会将签名好的ipa发送给客户了。签名好的ipa既可以上传到分发平台供用户进行下载,也可以使用PP助手等工具进行在线安装。
内测大师 是国内高端ios企业签名用户服务平台, 24小时在线服务,
提供苹果企业签名/ 封装签名/ 苹果超级签名/ APP预审 等内测服务。

您可以根据您的需求选择服务项目,您只需上传IPA文件包系统会自动完成所需服务,经过在线人工审核通过后即可使用,免费更新,无限制下载,自有企业账号,安全稳定,掉签免费补签。

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

文章目录

操作步骤:

  1. 生成根CA证书并自签
  2. 生成二级CA证书并使用CA证书签发
  3. 生成服务器证书并使用二级CA证书签发
  4. 制作CA证书链
  5. 打包为p12文件
  6. 转化为keystore文件

1. 生成根CA证书并自签

# 创建root-ca并自签名
openssl req -x509 -newkey rsa:2048 -nodes -keyout root-ca.key -out root-ca.crt -days 3650  -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=root-ca"

# 查看创建的证书
openssl x509 -in root-ca.crt -text -noout

2. 生成二级CA证书并使用CA根证书签发

# 创建secondary-ca的证书签名请求
openssl req -new -newkey rsa:2048 -nodes -keyout secondary-ca.key -out secondary-ca.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=secondary-ca"

# 使用root-ca签发secondary-ca的证书签名请求
openssl x509 -req -in secondary-ca.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out secondary-ca.crt -days 3650

# 查看创建的证书
openssl x509 -in secondary-ca.crt -text -noout

3. 生成服务器证书并使用二级CA证书签发

# 创建server的证书签名请求
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=server"

# 用secondary-ca签发server的证书签名请求
openssl x509 -req -in server.csr -CA secondary-ca.crt -CAkey secondary-ca.key -CAcreateserial -out server.crt -days 3650

# 查看创建的证书
openssl x509 -in server.crt -text -noout

4. 制作CA证书链

# server.crt的签发是secondary-ca,而secondary-ca的签发是root-ca
# 对server.crt的验证必须使用到这两个证书,需要制作为证书链。
# 制作证书链的方法直白而简单:将证书拼接在一个文件中即可
cat root-ca.crt secondary-ca.crt > chain-ca.crt

5. 打包为p12文件

# 打包为p12文件
openssl pkcs12 -export -in server.crt -inkey server.key -chain -CAfile chain-ca.crt -name server -out server.p12 -password pass:changeit

# 查看生成p12文件
openssl pkcs12 -in server.p12 -password pass:changeit

# 只查看私钥
openssl pkcs12 -in server.p12 -nocerts -nodes -password pass:changeit

# 只查看客户端证书(非CA证书)
openssl pkcs12 -in server.p12 -clcerts -nokeys -password pass:changeit

# 只查看CA证书
openssl pkcs12 -in server.p12 -cacerts -nokeys -chain -password pass:changeit

执行后,将会显示三个公钥,然后要求输入密码,之后会显示私钥,总共4个文件的打包都在这个p12文件中了!内容如下:

MAC verified OK
Bag Attributes
    friendlyName: server
    localKeyID: 9B 11 E1 8F 2C E9 A6 09 9A B9 BC 7B 06 1A 43 E9 C5 C8 B6 5A 
subject=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=server
issuer=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=secondary-ca
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
Bag Attributes: <No Attributes>
subject=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=secondary-ca
issuer=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=root-ca
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
Bag Attributes: <No Attributes>
subject=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=root-ca
issuer=/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=root-ca
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: server
    localKeyID: 9B 11 E1 8F 2C E9 A6 09 9A B9 BC 7B 06 1A 43 E9 C5 C8 B6 5A 
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
....
-----END ENCRYPTED PRIVATE KEY-----

6. 转化为keystore文件

# 将server.p12转化为server.jks
keytool -importkeystore -deststorepass changeit -destkeystore server.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass changeit -noprompt

#查看keystore文件
keytool -list -v -keystore server.jks -v -storepass changeit

#查看keystore文件 (rfc 格式)
keytool -list -rfc -keystore server.jks -storepass changeit

要注意的是:

  • server.jks只有一个entry:server
  • 这个entry的类型是:Entry type: PrivateKeyEntry

对于PrivateKeyEntry类型要特别解释一下:该类型的官方解释是:它包含一个密钥,这个密钥是加密的,查看时也不会显示,也不能导出,但要清楚的是,这个私钥是实实在在存在。同时,它还会包含这个私钥对应的证书链!所以,转成server.jks的文件是包含了server.p12中的全部信息:一个私钥+3个证书组成的证书链!

参考Java官方文档: https://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html

最后:既然keystore文件无法导出密钥,一般的处理方法是先将其转为p12文件,然后就可以导出密钥了!

7. 注意事项

在第5步中,如果给-CAfile传入的不是root-ca.crtsecondary-ca.crt拼接后chain-ca.crt文件,而是给server.crt直接授权的secondary-ca.crt文件,命令行将会报错:

Error unable to get issuer certificate getting chain.

8. 使用openssl x509openssl ca签发CA证书的差别

使用openssl x509和使用openssl ca没有本质差别,openssl ca使用的配置文件,文件中配置固定的index.txt和serial文件,来记录签发过的证书,确保不会重复签发。如果把当前服务器作为专门的CA签发机构,使用openssl ca及其关联的配置文件会更好一些。如果只是命令行临时生成一下,用openssl x509完全可以满足需求。

此外,从测试来看,openssl x509签发的只能是v1版本的,即使加了-extensions v3_ca也无效,但是openssl ca -extensions v3_ca签发出来的就是v3版本的。

以上是关于ios企业证书导出的P12和对应的描述文件,可以签名ipa吗?的主要内容,如果未能解决你的问题,请参考以下文章

Apple导出p12证书 导出证书为p12 Apple开发

一个苹果证书怎么多次使用——导出p12文件

iOS证书配置与管理

p12 文件中没有推送证书?

苹果证书导出p12文件

获取UDID的简单方法 和 P12证书无法导出问题