Я пишу приложение для Android, которое требует сертификации SSL для определенных веб-запросов. В отличие от параметров, которые я вижу в Интернете, о создании файлов хранилища ключей с использованием файла сертификата, я должен сделать начальный веб-запрос, который возвращает сертификат в виде строки в ответ json.Android - преобразование строки сертификата pkcs12 в объект сертификата x509 для bks keystore
данные JSON отформатирован как следующий ... (примечание: следующее свидетельство укорачивается, то «...» не существует в реальной реакции)
"result":{
"pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
Я декодировании этого значения используя Base64.deocode, чтобы сохранить его как байт []
ssl.setPkcs12(Base64.decode(jsonObject.optString("pkcs12")));
Тогда я пытаюсь создать X509Certificate с использованием байт []
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(ssl.getPkcs12());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
Мой код неудачу на методе generateCertificate() с
"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
Я потратил много времени, пытаясь исправить то, что, кажется, простая задача, не повезло вообще. Любая помощь будет потрясающей!
Можете ли вы вставить ответ JSON, содержащий сертификат здесь? – emboss
«результат»: { "pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH + zxKUkKGX/eN ... 9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk =" }, – calebisstupid