2010-07-20 6 views
5

पर X.50 9 प्रमाण पत्र को सत्यापित करने के लिए मैंने अभी X.50 9 प्रमाणपत्रों के साथ काम करना शुरू कर दिया है। क्या कोई मुझे बता सकता है कि लिनक्स पर प्रमाणपत्र प्रमाणित करने के बारे में कैसे जाना है? उपयोग का मामला यह है कि मेरे ऐप ने पिछले सत्र में एक प्रमाणपत्र डाउनलोड किया था और मुझे यह जांचना है कि क्या यह अभी भी वैध है (यानी, इसे संग्रहीत होने के बाद समाप्त नहीं किया गया है या रद्द कर दिया गया है)। मैं समझता हूं कि एक पूर्ण नमूना यहां संभव नहीं होगा, लेकिन कोई भी पॉइंटर्स उपयोगी होगा।लिनक्स

संपादित करें: आगे की जांच ने नेटवर्क सुरक्षा सेवाओं (एनएसएस) नामक एक और उपयोगिता का खुलासा किया। प्रयोज्यता के मामले में ओपनएसएसएल की तुलना कैसे की जाती है? साथ ही, मैं प्रोग्रामेटिक समाधान की तलाश में हूं क्योंकि मैं कमांड लाइन यूटिलिटीज लॉन्च नहीं कर पाऊंगा।

+0

सी में [x509 प्रमाण पत्र सत्यापन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2756553/x509- प्रमाणपत्र-verification-in-c) – jww

उत्तर

0

OCSP प्रमाण पत्र रद्द करने की जांच करने के लिए एक प्रोटोकॉल है। Openssl प्रमाण पत्र श्रृंखला सत्यापन और हस्ताक्षर सत्यापन API प्रदान करता है। इसके लिए कोडिंग की कुछ मात्रा की आवश्यकता है। तो मैं आपको Openssl दस्तावेज़ीकरण देखने के लिए सुझाव दूंगा।

आपको प्रमाणपत्र श्रृंखला पास करनी है और जब तक आप रूट प्रमाणपत्र तक नहीं पहुंच जाते हैं तब तक इसे सत्यापित करना होगा जो आपकी मशीन पर पहले से ही सहेजा जाना चाहिए। यह रूट सीएएस (सर्टिफिकेट अथॉरिटी) नामक संस्थाओं द्वारा जारी स्वयं हस्ताक्षरित प्रमाण पत्र है

ओसीएसपी के अलावा एक पुरानी विधि है जहां आपको निरस्तीकरण सूची लाने के लिए सीआरएल और पार्स जो प्रमाणपत्र आईडी के लिए सूची लेना है।

संपादित करें: मैं openssl कमांड लाइन उपयोगिता का उल्लेख करना भूल गया जो समान कार्यक्षमता करता है।

3

openssl verify आप क्या चाहते हैं, यदि आप एक साधारण उपकरण चाहते हो जाएगा:

चल रहा से:

./telesec.de/deutsche-telekom-root-ca-2.crt: OK 
./brasil.gov.br/brasil.gov.br.crt: OK 
./cacert.org/cacert.org.crt: OK 
./spi-inc.org/spi-ca-2003.crt: /C=US/ST=Indiana/L=Indianapolis/O=Software in the Public Interest/OU=hostmaster/CN=Certification Authority/[email protected] 
error 10 at 0 depth lookup:certificate has expired 
OK 
./spi-inc.org/spi-cacert-2008.crt: OK 
./signet.pl/signet_ocspklasa3_pem.crt: /C=PL/O=TP Internet Sp. z o.o./CN=CC Signet - CA Klasa 3/serialNumber=Numer wpisu: 4 
error 2 at 1 depth lookup:unable to get issuer certificate 
./signet.pl/signet_ca3_pem.crt: /C=PL/O=TP Internet Sp. z o.o./CN=CC Signet - CA Klasa 3/serialNumber=Numer wpisu: 4 
error 20 at 0 depth lookup:unable to get local issuer certificate 

यदि आप चाहते हैं:

cd /usr/share/ca-certificates 
find . -type f -exec openssl -verify {} \; 

यहाँ उत्पादन की एक चयन है इसके बजाय परिणाम एक बड़े कार्यक्रम में हैं, शायद gnutls_x509_crt_verify(3), gnutls_x509_crt_get_key_usage(3), gnutls_x509_crt_check_revocation(3) ओपनएसएसएल की तुलना में इंटरफेस का उपयोग करना आसान है। (मैं GNUTLS का उपयोग किया है कभी नहीं, लेकिन मैं इस्तेमाल किया OpenSSL है।)

18

दूसरों के रूप में उल्लेख किया है, आप openssl verify उपयोग कर सकते हैं। documentation के अनुसार, यह वैधता अवधि भी जांचता है।

प्रोग्रामेटिक रूप से, इसका मतलब हो सकता है कि थोड़े बुरे (या गायब) दस्तावेज, पूरे वेब पर कोड उदाहरण पढ़ना, और शायद सिरदर्द।

प्रमाण पत्र को सही तरीके से सत्यापित करने के लिए, आपको सभी इंटरमीडिएट प्रमाणपत्रों को सूचित करने की आवश्यकता है। आम तौर पर आप निरस्तीकरण सूची (सीआरएल) को भी सूचित करेंगे, लेकिन इसकी आवश्यकता नहीं है।

तो, यहाँ आप कोड के मामले (OpenSSL) में क्या करने की जरूरत है:

  1. X509_STORE_new - एक प्रमाणपत्र संग्रह बनाएं;
  2. X509_STORE_CTX_new - एक स्टोर संदर्भ बनाएं;
  3. X509_STORE_add_cert - अपने प्रमाणपत्र स्टोर की विश्वसनीय सूची में सीए (और सभी मध्यस्थ) प्रमाण पत्र जोड़ें (नोट: सूची देखने/लोड करने के लिए कोई फ़ंक्शन है);
  4. X509_STORE_add_crl - अपने प्रमाणपत्र स्टोर के सीआरएल में निरस्त प्रमाणपत्र जोड़ें (नोट: ऊपर जैसा ही);
  5. X509_STORE_CTX_init - अपने स्टोर स्टोर को अपने प्रमाणपत्र स्टोर को सूचित करना आरंभ करें;
  6. X509_STORE_CTX_set_purpose - यदि आपको इसकी आवश्यकता है तो उद्देश्य को परिभाषित करें;
  7. X509_STORE_CTX_set_cert - संदर्भ बताएं कि आप कौन सा प्रमाण पत्र सत्यापित करने जा रहे हैं;
  8. X509_verify_cert - अंत में, इसे मान्य करें;
  9. X509_STORE_CTX_cleanup - यदि आप किसी अन्य प्रमाणपत्र को सत्यापित करने के लिए संदर्भ का पुन: उपयोग करना चाहते हैं, तो आप इसे साफ़ कर लें और वापस जाएं (5);
  10. अंतिम लेकिन कम से कम नहीं, deallocate (1) और (2);

वैकल्पिक रूप से, X509_verify के साथ त्वरित सत्यापन किया जा सकता है। हालांकि, ध्यान रखें कि यह केवल हस्ताक्षर की तुलना करता है।

जब मुझे इसकी आवश्यकता थी, तो मुझे खोज, पढ़ने और परीक्षण का एक दिन लगा। तब मैंने यह पाया कि ओपनएसएसएल स्रोत-कोड में जो कुछ भी चाहिए वह सही था। इसलिए, यदि आपको एक उदाहरण की आवश्यकता है, तो सीधे openssl-xxx/apps/verify.c पर जाएं।

महत्वपूर्ण: एमडी 5 का उपयोग कभी नहीं करें। कारण को समझने के लिए, Creating a rogue CA certificate पढ़ें।

+0

क्या आप मुझे बता सकते हैं कि लुकअप/लोड सूची का उपयोग कैसे करें – Balamurugan