2012-06-13 10 views
6

मेरे पास एक वेब पेज है जहां मैं एक एसएसएल प्रमाणपत्र का विवरण दिखाता हूं जिसका उपयोग सर्वर के साथ किया जा रहा है। मैंने सोचा था कि toString() ठीक हो सकता है, लेकिन यह इस तरह दिखता है:क्या एक X509 प्रमाण पत्र प्रिंट करने का कोई तरीका है?

[0]   Version: 3 
     SerialNumber: 117262955582477610212812061435665386300 
      IssuerDN: CN=localhost 
      Start Date: Wed Jun 13 15:15:05 EST 2012 
      Final Date: Tue Jun 08 15:15:05 EST 2032 
      SubjectDN: CN=localhost 
      Public Key: DSA Public Key 
      y: 6ef96c2ace616280c5453dda2[TRUNCATED BY ME] 

    Signature Algorithm: SHA1withDSA 
      Signature: 302c021450b1557d879a25ccf6b89e7ac6de8dc6 
         0b13df7e0214559cdc810cdb1faa3a645da837cd 
         5efdeb81d62e 
     Extensions: 
         critical(true) 2.5.29.17 value = DER Sequence 
    Tagged [7] IMPLICIT 
     DER Octet String[4] 

समस्या मैं इसके साथ है एक्सटेंशन के अस्पष्ट प्रतिनिधित्व है। मैं "subjectAltNames" और वैकल्पिक नामों की सूची देखना पसंद करूंगा, जैसे कि जब मैं प्रमाणपत्र जानकारी देखता हूं तो मैं अपने वेब ब्राउज़र में क्या देख सकता हूं।

क्या ऐसा करने का कोई तरीका है? मेरे पास क्लास पथ पर बाउंसीकास्टल की पूरी तरह से है इसलिए मुझे उम्मीद थी कि मैं इसे वहां ढूंढ सकता हूं, लेकिन मुझे लगता है कि मैं इसे ढूंढने में सक्षम नहीं हूं।

सबसे खराब सबसे बुरी बात आती है मुझे पता है कि मैं अपने सभी बिट्स और टुकड़े खुद को पाने में समय लगा सकता हूं, लेकिन मुझे नहीं पता कि मैं किसी ऐसे एक्सटेंशन को याद करूंगा जो किसी को वहां मिलने की उम्मीद कर सकता है।

उत्तर

1

अपने स्वयं के समाधान के साथ अपने स्वयं के प्रश्न का उत्तर दें।

यह पता चला है कि यह क्रैपी टूस्ट्रिंग() आउटपुट केवल X509 प्रमाणपत्र के सूर्य के कार्यान्वयन का उपयोग करते समय होता है। BouncyCastle का उपयोग करते समय, यह बहुत बेहतर दिखता है (या अधिक विस्तृत, कम से कम।)

यह अभी पता चला है कि पृष्ठ को प्रस्तुत करने से पहले हम बीसी के प्रदाता को प्रारंभ नहीं कर रहे थे। प्रारंभिकरण में देरी हुई जब तक कि हम वास्तव में प्रमाण पत्र उत्पन्न करने के लिए इसका उपयोग नहीं करना चाहते थे और अब यह वेबपैड स्टार्टअप पर किया गया है, तो ToString() बहुत बेहतर दिखता है। ईसा पूर्व प्रदाता से

1

सुंदर बहुत सारे "बिट और टुकड़े" मानक X509Certificate वर्ग से उपलब्ध होना चाहिए:

आप बहुत आसानी से जो चाहो फ़ॉर्मेट करने के लिए सक्षम होना चाहिए, फिर भी आप चाहते हैं । आप "getIssuerAlternativeNames()" संग्रह के माध्यम से भी पहुंच और पुनरावृत्ति कर सकते हैं।

पुनश्च:

यहाँ X509Certificate वर्ग को लागू करने के बारे में एक उत्कृष्ट लिंक है:

और यहाँ कोई ऐसा जो Bouncy कैसल उपयोग कर रहा है से एक लिंक भी है (समाधान भी ऊपर शामिल लिंक):

0

कोशिश PEMReader एपीआई

byte[] content = data.getBytes(); 
// create new buffered reader 
PEMReader pemReader = new PEMReader(br, null);  
Object obj = pemReader.readObject(); 

एक बार आप obj प्रिंट यह आप toString प्रारूप दे देंगे

संबंधित मुद्दे