Tôi đang cố gắng sử dụng Java để đọc chứng chỉ mà tôi đã nhận được từ bên ngoài. Mã này được ném các lỗi sau:Đọc chứng chỉ X.509 với Java
java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
Mã:
FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);
Để đảm bảo vấn đề đã không có trong mã, tôi đã tạo ra một chứng chỉ tự ký và sử dụng nó với mã, và nó hoạt động tốt. Tôi đã cài đặt cả hai chứng chỉ trong chuỗi khóa hệ thống, và cả hai đều hợp lệ. Tôi đang sử dụng máy Mac và Java 1.6.
Bất kỳ ý tưởng nào tại sao tôi nhận được ngoại lệ trên khi tôi tải chứng chỉ của bên ngoài? Bạn có nghĩ rằng nó đã bị hỏng trong quá trình chuyển giao? Nếu nó đã làm, nó không nên hiển thị như là hợp lệ trên hệ thống địa phương, phải không?
Nếu bạn mở nó trong trình soạn thảo văn bản, nó có hiển thị văn bản hoặc rác không? –
Tôi mở mỏ trong trình soạn thảo văn bản và thùng rác hoàn chỉnh của nó và bên thứ ba được sắp xếp gọn gàng bên trong chứng chỉ BEGIN và văn bản chứng chỉ END và nội dung bên trong hai đầu này với == (base64 được mã hóa?) – Java
Sắp xếp gọn gàng như trong '- ---- BẮT ĐẦU CHỨNG NHẬN ----- \ n cơ sở 64 rác \ n ----- GIẤY CHỨNG NHẬN ----- 'Tôi đoán? –