Tôi đang phát triển một dự án Android.Một cách thích hợp để cài đặt PEM certifiate trong Android
Tôi có một chuỗi chứng PEM:
-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
VQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y
...MANY LINES...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----
(giao trên chuỗi chứng chỉ cho một biến có tên CERT_STR
)
tôi giải mã trên PEM chuỗi để mảng byte:
byte[] pemBytes = Base64.decode(
CERT_STR.replaceAll("-----(BEGIN|END) CERTIFICATE-----", "")
.replaceAll("\n", "")
.getBytes("UTF-8"),
Base64.DEFAULT
);
tôi cố gắng cài đặt theo chương trình chứng chỉ PEM cho điện thoại Android của tôi bằng cách làm theo mã:
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);
Khi chạy mã của tôi (trong Android 7 thiết bị), các ứng dụng cài đặt giấy chứng nhận hệ thống Android bật lên cửa sổ, khi tôi nhấn nút "OK" của cửa sổ đó, tôi đã sau log:
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)
câu hỏi của tôi:
tôi đã sử dụng EXTRA_CERTIFICATE & bộ nó để
intent
, tôi KHÔNG sử dụng EXTRA_PKCS12, nhưng từ nhật ký, sy Android stem nghĩ rằng tôi đang cài đặt kho khóa PKCS # 12. Tại sao?Cách chính xác để cài đặt chứng chỉ PEM theo chương trình trong Android là gì?
'dòng không đại diện cho một pkcs12 chính store' lý do nào để không cố gắng chuyển đổi nó đến PKCS12 sau đó? –
Nhưng tôi vẫn muốn biết cách thích hợp để cài đặt PEM trong Android là gì, đó là điểm của câu hỏi của tôi. –
Điều này có vẻ là bản sao chính xác của https://stackoverflow.com/questions/40464815/install-x509-certificate-programmatically-in-my-case – ozbek