Я пытаюсь использовать Java для чтения сертификата, полученного мной от внешней стороны. Код бросает следующее сообщение об ошибке:Чтение сертификата X.509 с помощью Java
java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
Код:
FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);
Для того, чтобы убедиться, что проблема была не в коде, я создал самозаверяющий сертификат и использовать его с кодом, и он работал нормально. Я установил оба сертификата в цепочке ключей системы, и оба они действительны. Я использую Mac и Java 1.6.
Любая идея, почему я получаю исключение выше, когда загружаю внешний сертификат? Как вы думаете, он был поврежден во время передачи? Если это так, оно не должно отображаться как действительное в локальной системе, верно?
Если вы открываете его в текстовом редакторе, отображает ли он текст или мусор? –
Я открыла шахту в текстовом редакторе, а ее полный мусор и сторонний - это аккуратно устроенный мусор в тексте BEGIN Certificate и END, а содержимое внутри этих двух концов с == (base64 encoded?) – Java
Аккуратно устроено как в ' ---- СТАРТ СЕРТИФИКАТ ----- \ n база 64 мусор \ n ----- КОНЕЦ СЕРТИФИКАТА ----- 'Я полагаю? –