Lectura de certificados en java CFDI

Hola, intento cargar un certificado desde un jsp en un campo tipo file, este jsp llama a un servlet y en este cacho el certificado (para obtener el archivo utilice com.oreilly.servlet.multipart.*), de este obtengo un InputStream e intento convertirlo a un objeto de tipo X509Certificate haciendo lo siguiente:

CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = X509Certificate.getInstance(filePart.getInputStream());

pero me regresa esto:
InvocationTargetException: javax.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input

tambien lo itente de la siguiente forma leyendo el inputStream para convertirlo en un string(con InputStreamReader ) y esta es mi varible obtenida fileXML:

InputStream is = new ByteArrayInputStream(fileXML.getBytes());
byte[] bytesCertificate;
bytesCertificate=fileXML.getBytes();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = X509Certificate.getInstance(is);
y me vota esto:
InvocationTargetException: javax.security.cert.CertificateException: java.io.IOException: DerInputStream.getLength(): lengthTag=67, too big.

Ha por otro lado lo logro hacer pasandole la ruta del archivo con fileInputStream y este objeto se lo paso a generateCertificate y funciona bien , pero no lo debeo hacer asi ya q qiero mantenerlo todo en memoria desde que recibo el archivo por post, es decir q no qiero escribir en disco el archivo; alguna idea de como pudo hacerlo; se los agradeceria demasiado!!!

Saludos!!