2012-03-20 33 views
5

मैं एक उपयोगिता वर्ग की तलाश में हूं जो परीक्षण उद्देश्यों के लिए यादृच्छिक प्रमाणपत्र स्ट्रिंग उत्पन्न कर सकता है। कोई विचार अगर कोई पहले से ही लागू किया गया है?यादृच्छिक प्रमाणपत्र उत्पन्न करें

उत्तर

4

निर्मित जावा X500 पुस्तकालयों पैदा और प्रमाण पत्र पार्स करने से प्रमाण पत्र का उपयोग कर अधिक की दिशा में तैयार कर रहे हैं। आपको जो भी चाहिए वो करने का एक तरीका मिल सकता है, लेकिन यह लगभग निश्चित रूप से गन्दा और संरक्षित एपीआई (sun.security.*) में होगा।

मेरा सुझाव है कि आप बाउंसी कैसल लाइब्रेरी (अपाचे लाइसेंस) शामिल करें। इसमें X509V3CertificateGenerator नामक एक वर्ग है जिसे आप प्रमाणपत्र (जारीकर्ता, विषय, समाप्ति तिथि, आदि) के फ़ील्ड सेट करने के लिए उपयोग कर सकते हैं।

आपको PEMWriter कक्षा का उपयोग करके पीईएम स्ट्रिंग प्राप्त करने में सक्षम होना चाहिए।

+5

ध्यान दें कि 'X509V3CertificateGenerator' को कम कर दिया गया है (कम से कम बाउंसी कैसल 1.47 में)। वे 'X509v3CertificateBuilder' का उपयोग करने का सुझाव देते हैं (' bcprov' में नहीं बल्कि 'bcpkix' jar में)। – martijno

+0

अब यह 'bcmail' jar – KeksArmee

+0

@KeksArmee में है: यह अभी भी' bcpkix' में है। – jackyalcine

3

, martijno द्वारा दिए गए समाधान के लिए जोड़ने के लिए

के बजाय अपनी खुद की सामग्री हस्ताक्षरकर्ता लेखन, JCAContentSigner AlgorithmIdentifier (अर्थात OID) को मैपिंग से बचने के लिए इस्तेमाल किया जा सकता।

JcaContentSignerBuilder here परिभाषित एल्गोरिदम नाम लेता है।

X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(issuer, serialNumber, startDate, expiryDate, subject, SubjectPublicKeyInfo.getInstance(keyPair.getPublic().getEncoded())); 
JcaContentSignerBuilder builder = new JcaContentSignerBuilder("SHA256withRSA"); 
ContentSigner signer = builder.build(keyPair.getPrivate()); 

byte[] certBytes = certBuilder.build(signer).getEncoded(); 
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); 
X509Certificate certificate = (X509Certificate)certificateFactory.generateCertificate(new ByteArrayInputStream(certBytes)); 
+0

क्या मैं सही हूं अगर यह स्वयं हस्ताक्षरित प्रमाणपत्र नहीं है, तो मैं निजी कुंजी को सीए की निजी कुंजी के साथ बदलता हूं? – maxbit89

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