Android 프로젝트를 개발 중입니다.내 경우 프로그래밍 방식으로 X509 인증서를 설치하십시오.
이-----BEGIN CERTIFICATE-----
MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0Ix
EzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYD
VQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y
...MANY LINES...
It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsGeFKkyNrwGi/
7vQMfXdGsRrXNGRGnX+vWDZ3/zWI0joDtCkNnqEpVn..HoX
-----END CERTIFICATE-----
I에 의해이 X509Certificate에 PEM 문자열 위의 변환
(나는 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);
, 내가하려고 내가 PEM 인증서 문자열이 프로그래밍 방식으로 인증서를 설치하는 방법 :
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);
내 응용 프로그램을 실행, 시스템 대화 상자가 "압축 풀기 ..."라는 메시지가 나타나면 시스템에서 내 인증서를 추출한다는 것을 알고 있지만 그 대화 상자에는 항상 "추출 중 ..."이라는 이 표시됩니다.
왜? 인증서를 설치하는 코드가 어디에서 잘못 되었습니까?
코드에는 base64로 인코딩 된 코드가 아니라 바이너리 인증서가 필요합니다. – Robert
@ 로버트, 나는 내 코드의 어느 부분이 base64 인코딩을 사용하는지 당신의 말을 이해하지 못합니까? –
BEGIN과 END CERTIFICATE 사이의 부분은 base64로 인 코드 된 인증서입니다. x.509 CertificateFactory는 AFAIR에 바이너리 인증서가 필요합니다. – Robert