Potrzebuję uzyskać datę wygaśnięcia naszego certyfikatu przedsiębiorstwa iOS Enterprise używanego w pliku embedded.mobileprovision ipa za pomocą wiersza polecenia.Uzyskaj datę wygaśnięcia certyfikatu z profilu obsługi embedded.mobileprovision
Mam to do tej pory:
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
Odpowiedź:
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 polecenie działa na naszym pliku certyfikatu tylko drobne:
openssl x509 -inform DER -noout -text -in "iPhone Distribution: XXXX.cer"
Więc co ja brakuje tego, pobierając certyfikat z embedded.mobileprovision, dekoduje go i zapisuje w pliku lub przekazuje go za pomocą potoków.
Gdybym podzielić Sommand się, otrzymujemy następujące:
a. Uzyskaj certyfikat z embedded.mobileprovision:
security cms -D -i Payload/*.app/embedded.mobileprovision > tmp.plist && /usr/libexec/PlistBuddy -c 'Print :DeveloperCertificates' tmp.plist > encodedcert.b64
b. Odkodować pobrany plik base64 do pliku .cer:
base64 -d encodedcert.b64 certificate.cer
c. Przeczytaj go z OpenSSL:
openssl x509 -inform DER -noout -text -in certificate.cer
Niestety, wygenerowany plik certificate.cer przez moją komendą base64 jest długa zerowe bajty ...
Kto może mi dalej pomóc?