मैं कमांड लाइन से एक प्रमाण पत्र की समाप्ति तिथि प्राप्त करने का तरीका ढूंढ रहा हूं। प्रमाणपत्र डिफ़ॉल्ट 'लॉगिन' किचेन में है और मुझे इसका नाम पता है। मैं यह कैसे कर सकता हूँ?
मैं कमांड लाइन से एक प्रमाण पत्र की समाप्ति तिथि प्राप्त करने का तरीका ढूंढ रहा हूं। प्रमाणपत्र डिफ़ॉल्ट 'लॉगिन' किचेन में है और मुझे इसका नाम पता है। मैं यह कैसे कर सकता हूँ?
जवाबों:
GuyGizmo का जवाब MacOS 10.14.4 पर Xcode 10.1 टूल के साथ काम नहीं करता है। मैंने कुछ कोशिशों के बाद इस तरह से एक साथ खींच लिया।
जब से मैं यह जानने की कोशिश कर रहा था कि मेरे डेवलपर कोड पर हस्ताक्षर करने का प्रमाणपत्र कमांड लाइन से कब समाप्त होता है, तो मैं आसानी से उन ऐप्स को देख सकता हूं जिन्हें मैंने साइन किया था:
codesign --display --verbose --extract-certificates /path/to/dir.app
यह आपको ऐप के बारे में एक निश्चित राशि बताता है, और codesign0
डीईआर प्रारूप में वर्तमान निर्देशिका नामक फ़ाइल में एम्बेडेड हस्ताक्षर प्रमाण पत्र (इसकी निजी कुंजी के बिना, इसलिए पासवर्ड की कोई आवश्यकता नहीं है) निकालता है । ट्रस्ट की श्रंखला में अन्य प्रमाण पत्र उतने ही निकाले जाते हैं codesign1
, codesign2
जितने की जरूरत हो। आपके द्वारा उनके साथ काम पूरा करने के बाद उन्हें हटाना संभव है।
फिर आप समाप्ति तिथि प्राप्त करने के लिए ओपनएसएसएल कमांड लाइन टूल का उपयोग कर सकते हैं:
openssl x509 -inform der -in codesign0 -enddate -noout
जो परिणाम की तरह प्रिंट करता है:
notAfter=June 8 10:37:33 2020 GMT
codesign0
फ़ाइल से समान जानकारी प्राप्त करने का एक और तरीका , एक प्रारूप में जो प्रोग्रामिंग भाषा के साथ पार्स करना आसान हो सकता है, वह है:
openssl asn1parse -in codesign0 -inform der | grep UTCTIME
यह आपको ASN.1 UTC समय प्रारूप में शुरुआत और समाप्ति की तारीख दिखाएगा , जो आमतौर YYMMDDhhmmssZ
पर एक Apple कोड हस्ताक्षर प्रमाण पत्र में होता है। हां, दो अंकों वाले वर्ष का अर्थ है ASN.1 UTC का समय हर शताब्दी के आसपास होता है।
security verify-cert
, संभवतः-d
ध्वज के साथ काम करेगा।