मैं जावा पर लाइब्रेरी बाउंसी कैसल के साथ एक प्रमाण पत्र X509 बनाता हूं। मुझे निजी कुंजी के लिए एक कुंजी विशेषता सेट करने की आवश्यकता है।
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
Bag Attributes
friendlyName: ASDF
localKeyID: XX XX XX XX
Microsoft CSP Name: Microsoft Software Key Storage Provider <--- (1)
Key Attributes: <No Attributes> <--- put HERE X509v3 Key Usage: 80
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
-----END ENCRYPTED PRIVATE KEY-----
मुझे कुंजी उपयोग सेट करने की आवश्यकता है 80 -> X509v3 मुख्य उपयोग: 80. क्योंकि मैं उन विशेषताओं के नहीं होने पर मायावी वक्र और खिड़कियों के साथ काम नहीं करता हूं।
मैंने इसके साथ प्रयास किया:
X509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder(
issuerDNName,
serial,
startDate,
endDate,
tX500Name,
pubKey);
X509KeyUsage usage = new X509KeyUsage(X509KeyUsage.digitalSignature);
builder.addExtension(Extension.keyUsage, false, usage);
या
builder.addExtension(
new ASN1ObjectIdentifier("2.5.29.15"),
true,
new X509KeyUsage(
X509KeyUsage.digitalSignature));
कोई काम नहीं करते। मैं एक बैग विशेषता (1) सेट कर सकता हूं:
PKCS12BagAttributeCarrier bagAttr = (PKCS12BagAttributeCarrier)privateKey;//pbeWithSHA1And3-KeyTripleDES-CBC
bagAttr.setBagAttribute(
MicrosoftObjectIdentifiers.microsoft.branch("17").branch("1"),// this OID corresponds to: 1.3.6.1.4.1.311.17.1
new DERBMPString("Microsoft Software Key Storage Provider"));
एक PrivateKeyInfo क्लास में मौजूद है, लेकिन मैं इसका इस्तेमाल नहीं करता।
अगर मैं ओप्सनल के साथ बनाता हूं, तो मुझे पुट -गसिग विकल्प की जरूरत है ।
openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -name "MY CERTIFICATE" -certfile demoCA/cacert.pem -out mycert.p12 -keysig
ओपनएसएसएल डॉक्स
-keyex | -keysig निर्दिष्ट करता है कि निजी कुंजी का उपयोग कुंजी विनिमय या सिर्फ हस्ताक्षर करने के लिए किया जाना है। यह विकल्प केवल MSIE और इसी तरह के MS सॉफ़्टवेयर द्वारा व्याख्या किया जाता है। आम तौर पर "निर्यात ग्रेड" सॉफ़्टवेयर केवल 512 बिट आरएसए कुंजी को एन्क्रिप्शन उद्देश्यों के लिए उपयोग करने की अनुमति देगा, लेकिन हस्ताक्षर करने के लिए मनमाने ढंग से लंबाई की चाबियाँ। -Keysig विकल्प केवल हस्ताक्षर करने के लिए कुंजी को चिह्नित करता है। केवल कुंजियों पर हस्ताक्षर करने का उपयोग S / MIME हस्ताक्षर, प्रामाणिक (ActiveX नियंत्रण हस्ताक्षर) और SSL क्लाइंट प्रमाणीकरण के लिए किया जा सकता है, हालाँकि बग केवल MSIE 5.0 के कारण होता है और बाद में SSL ग्राहक प्रमाणीकरण के लिए केवल कुंजियों पर हस्ताक्षर करने के उपयोग का समर्थन करता है।
नतीजा:
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
localKeyID: XX XX XX XX
friendlyName: ASDF
Microsoft CSP Name: ECDSA_P256#Microsoft Software key Service Provider
Key Attributes
X509v3 Key Usage: 80 <-- This
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
-----END ENCRYPTED PRIVATE KEY-----
धन्यवाद!