में पीईएम प्रमाण पत्र स्थापित करने का एक उचित तरीका मैं एक एंड्रॉइड प्रोजेक्ट विकसित कर रहा हूं।एंड्रॉइड
मैं एक पीईएम प्रमाणपत्र स्ट्रिंग है:
-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
VQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y
...MANY LINES...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----
मैं बाइट सरणी के लिए पीईएम स्ट्रिंग ऊपर डिकोड (प्रमाणपत्र स्ट्रिंग ऊपर CERT_STR
नामक एक चर को सौंपना):
byte[] pemBytes = Base64.decode(
CERT_STR.replaceAll("-----(BEGIN|END) CERTIFICATE-----", "")
.replaceAll("\n", "")
.getBytes("UTF-8"),
Base64.DEFAULT
);
मैं कोड का पालन करके अपने एंड्रॉइड फोन पर प्रोग्रामेटिक रूप से पीईएम प्रमाणपत्र स्थापित करने का प्रयास करें:
Intent intent = KeyChain.createInstallIntent();
// because my PEM only contains a certificate, no private key, so I use EXTRA_CERTIFICATE
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, pemBytes);// above PEM bytes
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
जब (एंड्रॉयड 7 डिवाइस में) मेरे कोड चलाने के लिए, एंड्रॉयड प्रणाली प्रमाणपत्र संस्थापक एप्लिकेशन अप विंडो, जब मैं "ओके" दबाएं कि विंडो के बटन दिखाई दे, मैं लॉग निम्नलिखित गया:
java.io.IOException: stream does not represent a PKCS12 key store
at com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(PKCS12KeyStoreSpi.java:793)
at java.security.KeyStore.load(KeyStore.java:1247)
at com.android.certinstaller.CredentialHelper.loadPkcs12Internal(CredentialHelper.java:396)
at com.android.certinstaller.CredentialHelper.extractPkcs12Internal(CredentialHelper.java:364)
at com.android.certinstaller.CredentialHelper.extractPkcs12(CredentialHelper.java:354)
at com.android.certinstaller.CertInstaller$1.doInBackground(CertInstaller.java:328)
at com.android.certinstaller.CertInstaller$1.doInBackground(CertInstaller.java:327)
मेरे सवालों का:
मैं
intent
को EXTRA_CERTIFICATE & सेट इसका इस्तेमाल किया, मैं EXTRA_PKCS12 उपयोग नहीं कर रहा है, लेकिन लॉग से, एंड्रॉयड एसवाई स्टेम सोचता है कि मैं पीकेसीएस # 12 कीस्टोर स्थापित कर रहा हूं। क्यूं कर?एंड्रॉइड में प्रोग्रामेटिक रूप से पीईएम प्रमाणपत्र स्थापित करने का सही तरीका क्या है?
'धारा एक PKCS12 कुंजी store' किसी भी कारण से यह परिवर्तित करने की कोशिश नहीं करने का प्रतिनिधित्व नहीं करता करने के लिए एंड्रॉयड CertInstaller वर्ग सहित कोड डिबग करने के लिए सुझाव है फिर पीकेसीएस 12 के लिए? –
लेकिन मैं अभी भी जानना चाहता हूं कि एंड्रॉइड में पीईएम स्थापित करने का सही तरीका क्या है, यह मेरे प्रश्न का मुद्दा है। –
यह https://stackoverflow.com/questions/40464815/install-x509-certificate-programmatically-in-my-case – ozbek