मैं एक एंड्रॉइड प्रोजेक्ट विकसित कर रहा हूं।मेरे मामले में प्रोग्रामिंग रूप से X509 प्रमाणपत्र स्थापित करें
-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
VQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y
...MANY LINES...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----
मैं द्वारा X509Certificate को पीईएम स्ट्रिंग ऊपर परिवर्तित (मैं CERT_STR
नामक एक चर करने के लिए प्रमाण पत्र स्ट्रिंग ऊपर सौंपा):
byte[] certBytes = CERT_STR.getBytes();
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
InputStream certIs = new ByteArrayInputStream(certBytes);
// now I get the X509 certificate from the PEM string
X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(certIs);
फिर, मैं कोशिश मैं एक पीईएम प्रमाणपत्र स्ट्रिंग है प्रमाण पत्र प्रोग्रामेटिक रूप से स्थापित करने के लिए:
Intent intent = KeyChain.createInstallIntent();
// because my PEM only contains a certificate, no private key, so I use EXTRA_CERTIFICATE
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, certificate.getEncoded());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
कब मैं अपना ऐप चलाता हूं, मुझे लगता है कि सिस्टम डायलॉग "एक्स्ट्रेक्टिंग ..." कह रहा है, मुझे पता है कि सिस्टम मेरा प्रमाणपत्र निकाला जा रहा है, लेकिन वह संवाद हर समय कह रहा है "निकालने ..."।
क्यों? प्रमाण पत्र स्थापित करने के लिए मेरे कोड में मैं गलत कहां हूं?
आपके पास कोड के लिए एक बाइनरी प्रमाण पत्र की आवश्यकता है, न कि बेस 64 एन्कोडेड। – Robert
@ रॉबर्ट, मैं आपके शब्दों को काफी समझ नहीं पा रहा हूं, मेरे कोड का कौन सा हिस्सा बेस 64 एन्कोडिंग का उपयोग करता है? –
BEGIN और END CERTIFICATE के बीच का हिस्सा बेस 64 एन्कोडेड प्रमाणपत्र है। X.50 9 सर्टिफिकेट फैक्ट्री को AFAIR को बाइनरी प्रमाणपत्र की आवश्यकता होती है। – Robert