从 embedded.mobileprovision 配置文件中获取证书到期日期
Get certificate expiry date from the embedded.mobileprovision provisioning profile
我需要使用命令行获取在 ipa 的 embedded.mobileprovision 文件中使用的 iOS 企业证书的到期日期。
到目前为止我已经知道了:
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print :DeveloperCertificates' tmp.plist | base64 -d - | openssl x509 -inform DER -noout -text
回复:
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 510 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 680 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 510 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 680 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 440 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 588 bytes.
unable to load certificate
14722:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:/SourceCache/OpenSSL098/ OpenSSL098-52.20.2/src/crypto/asn1/tasn_dec.c:1323:
14722:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:/SourceCache/ OpenSSL098/OpenSSL098-52.20.2/src/crypto/asn1/tasn_dec.c:379:Type=X509
openssl 命令适用于我们的证书文件:
openssl x509 -inform DER -noout -text -in "iPhone Distribution: XXXX.cer"
所以我缺少的是从 embedded.mobileprovision 中获取证书,对其进行解码并将其保存到文件或通过管道传递。
如果我将 sommand 分开,我们会得到以下结果:
一个。从embedded.mobileprovision:
中获取证书
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print :DeveloperCertificates' tmp.plist > encodedcert.b64
b。将检索到的 base64 解码为 .cer 文件:
base64 -d encodedcert.b64 certificate.cer
c。用openssl读取:
openssl x509 -inform DER -noout -text -in certificate.cer
不幸的是,我的 base64 命令生成的 certificate.cer 文件长度为零字节...
谁能进一步帮助我?
已成功获取证书信息
问题是我的 PlistBuddy 命令有误。我应该使用 'DeveloperCertificates:0' 而不是 ':DeveloperCertificates'。
我也不需要 base64 的东西。
因此,从 embedded.mobileprovision 配置文件中的企业证书获取信息的工作命令行是
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' tmp.plist | openssl x509 -inform DER -noout -enddate
分为三个部分:
从 embedded.mobileprovision 获取 plist:
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist
从plist中获取第一个证书:
/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' tmp.plist |
读取通过管道传递的证书并提取结束日期(-text 而不是 -enddate 为您提供完整的证书信息):
openssl x509 -inform DER -noout -enddate
编辑:这是没有临时 plist 文件的命令:
/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' /dev/stdin <<< $(security cms -D -i Payload/*.app/embedded.mobileprovision) | openssl x509 -inform DER -noout -enddate
我需要使用命令行获取在 ipa 的 embedded.mobileprovision 文件中使用的 iOS 企业证书的到期日期。
到目前为止我已经知道了:
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print :DeveloperCertificates' tmp.plist | base64 -d - | openssl x509 -inform DER -noout -text
回复:
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 510 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 680 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 510 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 680 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Read 440 bytes.
Apr 22 12:28:47 c01892 base64[14721] <Info>: Wrote 588 bytes.
unable to load certificate
14722:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:/SourceCache/OpenSSL098/ OpenSSL098-52.20.2/src/crypto/asn1/tasn_dec.c:1323:
14722:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:/SourceCache/ OpenSSL098/OpenSSL098-52.20.2/src/crypto/asn1/tasn_dec.c:379:Type=X509
openssl 命令适用于我们的证书文件:
openssl x509 -inform DER -noout -text -in "iPhone Distribution: XXXX.cer"
所以我缺少的是从 embedded.mobileprovision 中获取证书,对其进行解码并将其保存到文件或通过管道传递。
如果我将 sommand 分开,我们会得到以下结果:
一个。从embedded.mobileprovision:
中获取证书security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print :DeveloperCertificates' tmp.plist > encodedcert.b64
b。将检索到的 base64 解码为 .cer 文件:
base64 -d encodedcert.b64 certificate.cer
c。用openssl读取:
openssl x509 -inform DER -noout -text -in certificate.cer
不幸的是,我的 base64 命令生成的 certificate.cer 文件长度为零字节...
谁能进一步帮助我?
已成功获取证书信息
问题是我的 PlistBuddy 命令有误。我应该使用 'DeveloperCertificates:0' 而不是 ':DeveloperCertificates'。
我也不需要 base64 的东西。
因此,从 embedded.mobileprovision 配置文件中的企业证书获取信息的工作命令行是
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' tmp.plist | openssl x509 -inform DER -noout -enddate
分为三个部分:
从 embedded.mobileprovision 获取 plist:
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist
从plist中获取第一个证书:
/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' tmp.plist |
读取通过管道传递的证书并提取结束日期(-text 而不是 -enddate 为您提供完整的证书信息):
openssl x509 -inform DER -noout -enddate
编辑:这是没有临时 plist 文件的命令:
/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' /dev/stdin <<< $(security cms -D -i Payload/*.app/embedded.mobileprovision) | openssl x509 -inform DER -noout -enddate