Página 1 de 1

[Duda]Como convertir a DER

Publicado: Mar May 31, 2011 11:21 am
por eduardoaap
Lo que pasa es que estoy desarrollando un clienteWebService y para el método cancelar me piden el miLlave.key y el miCertificado.cer pero en formato DER, pero la verdad no encuentro como convertir ambos archivos a DER, espero que alguien me pueda ayudar.
De antemano gracias!!!

Re: [Duda]Como convertir a DER

Publicado: Mar May 31, 2011 12:01 pm
por Dado
Esos archivos YA ESTAN en formato DER

Talvez quieras decir convertirlos a PFX o P12 o PEM.......revisa bien tus especificaciones.

Re: [Duda]Como convertir a DER

Publicado: Mar May 31, 2011 3:46 pm
por eduardoaap
Este método de cancelar es del PAC solucionfactible, yo le mando el certificado tal cual lo tengo es un archivo.cer pero me devuelve el siguiente error: "Ocurrió un error al cargar el certificado, verifique que sea un certificado digital válido", lo que hago es lo siguiente:

Código: Seleccionar todo

String cert = "path/del/cert/miCert.cer";
String key = "path/del/ket/miKey.key";
InputStream certFile = new FileInputStream(cert);
InputStream keyFile = new FileInputStream(key);
//Primero pide usuario, despues contraseña, depues el UUID a cancelar, el certificado y el key en byte[]
solucionFactible.cancelar("usuario", "pass", "UUID", getBytes(certFile), getBytes(KeyFile));

public static byte[] getBytes(InputStream is) throws IOException{
        int len;
        int size = 1024;
        byte[] buf;

        if (is instanceof ByteArrayInputStream) {
            size = is.available();
            buf = new byte[size];
            len = is.read(buf, 0, size);
        } else {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            buf = new byte[size];
            while ((len = is.read(buf, 0, size)) != -1) {
                bos.write(buf, 0, len);
            }
            buf = bos.toByteArray();
        }
        return buf;
    }
¿Estoy haciendo algo mal?... Espero que me puedan ayudar, de antemano gracias!!!

Re: [Duda]Como convertir a DER

Publicado: Mar May 31, 2011 6:01 pm
por Dado
Total que no va a ser a PFX ni a PEM....je je je

En tu codigo lo estas enviando como un arreglo de bytes pero eso no esta bien, debe ser en base64, convierte tu certificado y tu key a base64 y asi envialo, te lo digo con 100% de certeza porque yo asi lo tengo programado y funciona.

Re: [Duda]Como convertir a DER

Publicado: Mié Jun 01, 2011 9:43 pm
por hrzio
Yo no he tenido problema para usar el método que recibe array de bytes pero, ¿Estás seguro de que estás leyendo completamente el archivo .cer y que está en formato DER, tal como te lo entregó el SAT?
Te propongo simplificar el código de tu función

Código: Seleccionar todo

getBytes
a lo siguiente:

Código: Seleccionar todo

public static byte[] getBytes(InputStream is) throws IOException{
        byte[] buf = new byte[is.available()];//reservar el espacio necesario para leer el .cer
        is.read(buf);//leer el InputStream
        return buf;//retornar el array de bytes lleno
    }
Para verificar que el certificado se encuentre en un formato correcto puedes usar openssl:

Código: Seleccionar todo

openssl x509 -in certificado.cer -inform DER -noout -text
esto te debe mostrar la información del certificado

Espero pruebes y nos comentas cómo te fue

Re: [Duda]Como convertir a DER

Publicado: Lun Jun 06, 2011 3:01 pm
por eduardoaap
Gracias a sus respuestas, lo que pasa es que el proceso estaba correcto, el problema fue que me habían cambiado los archivos.
Saludos y gracias!!!