Foros del Web » Programación para mayores de 30 ;) » Java »

Firma Electronica SAT Mexico

Estas en el tema de Firma Electronica SAT Mexico en el foro de Java en Foros del Web. Hola que tal, les comento que estoy tratando de validar un certificado para ser preciso es el *.cer, estoy ocupando las librerias de bouncycastle y ...
  #1 (permalink)  
Antiguo 11/07/2012, 16:21
Avatar de vlah  
Fecha de Ingreso: enero-2002
Mensajes: 254
Antigüedad: 22 años, 3 meses
Puntos: 0
Pregunta Firma Electronica SAT Mexico

Hola que tal, les comento que estoy tratando de validar un certificado para ser preciso es el *.cer, estoy ocupando las librerias de bouncycastle y siempre me manda que el servidor esta ocupado, alquien sabe por que? les dejo parte del codigo ya que llevo varios dias con ello saludos..


CertificateID certificadoId = null;
X509Certificate cert =null;
X509Certificate cert2 =null;
BigInteger serial =null;
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider ());
try {
InputStream fr = new FileInputStream("c://******.cer");
CertificateFactory cf =
CertificateFactory.getInstance("X509");
cert = (X509Certificate)
cf.generateCertificate(fr);
serial = cert.getSerialNumber();
serial = new BigInteger("0");

FileInputStream fr2 = new FileInputStream("c://*****.crt");
CertificateFactory cf2 =
CertificateFactory.getInstance("X509");
cert2 = (X509Certificate)
cf.generateCertificate(fr2);
//add
TrustAnchor ta = new TrustAnchor(cert, null);
Set trustedCertsSet = new HashSet();
trustedCertsSet.add(ta);
//


} catch (Exception e) {
e.printStackTrace();
}

/*Se genera la petición con el certificado a verificar y su número de serie*/

OCSPReqGenerator ocspReqGen = new OCSPReqGenerator();
try {
certificadoId = new CertificateID(CertificateID.HASH_SHA1,cert2, serial);

} catch (OCSPException e) {
e.getMessage();
}


//ocspReqGen.addRequest(new CertificateID(CertificateID.HASH_SHA1,cert, cert.getSerialNumber()));

try {
ocspReqGen.addRequest(certificadoId);

BigInteger time = BigInteger.valueOf(System.currentTimeMillis());

Vector<DERObjectIdentifier> oids = new Vector<DERObjectIdentifier>();
Vector<X509Extension> values = new Vector<X509Extension>();

oids.add(OCSPObjectIdentifiers.id_pkix_ocsp_nonce) ;
values.add(new X509Extension(false, new DEROctetString(time.toByteArray())));

ocspReqGen.setRequestExtensions(new X509Extensions(oids, values));

OCSPReq ocspReq = ocspReqGen.generate();
byte[] ocsp= ocspReq.getEncoded();


/* Se establece la conexión HTTP con el ocsp */

URL url = new URL("http://www.sat.gob.mx/ocsp");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
/* Se configuran las propiedades de la petición HTTP */

con.setRequestProperty("Content-Type", "application/ocsp-request");
con.setRequestProperty("Accept", "application/ocsp-response");
con.setRequestMethod("POST");
//con.setRequestProperty("Content-Length", String.valueOf(ocsp.length));
con.setDoOutput(true);
con.connect();
OutputStream out = con.getOutputStream();
DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(out));
//out.write(ocsp,0,ocsp.length);
//out.close();

/* Se obtiene la respuesta del servidor OCSP */
dataOut.write(ocspReq.getEncoded());
dataOut.flush();
dataOut.close();



/* Se parsea la respuesta y se obtiene el estado del certificado retornado por el OCSP */
InputStream in = (InputStream) con.getContent();

//OutputStream bs = new FileOutputStream("Ocsp.resp");


OCSPResp ocspResponse = new OCSPResp(in);
//comprobar si la respuesta es successfull



/* Se verifica el tipo de respuesta enviada*/
int status = ocspResponse.getStatus();

if(ocspResponse.getStatus() == OCSPResponseStatus.SUCCESSFUL){
System.out.println("RESPUESTA:: Response has valid confirmations");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.INTERNAL_ERROR){
System.out.println("RESPUESTA:: Internal error in issuer");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.MALFORMED_REQUEST){
System.out.println("RESPUESTA:: Illegal confirmation request");
}else if(ocspResponse.getStatus() == OCSPResponseStatus.SIG_REQUIRED){
System.out.println("RESPUESTA:: Must sign the request");
}else if(ocspResponse.getStatus() == OCSPResponseStatus.TRY_LATER){
System.out.println("RESPUESTA:: Try again later.");
}else if (ocspResponse.getStatus() == OCSPResponseStatus.UNAUTHORIZED){
System.out.println("RESPUESTA:: Request unauthorized");
}


} catch (Exception e) {
e.printStackTrace();
}


salu2.
__________________
<<<<VLAH>>>>> :-D
  #2 (permalink)  
Antiguo 06/08/2012, 01:47
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Firma Electronica SAT Mexico

Que tal compañero, has podido resolver esto?? estoy con el mismo problemita, consulto al servicio OCSP del SAT y siempre me responde status 3, que intente mas tarde!! : ya me tomo varias noches tratar de averiguar esto!! por tu ayuda muchas gracias.
  #3 (permalink)  
Antiguo 06/08/2012, 02:08
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Firma Electronica SAT Mexico

estas es la url a la que consulto: http://www.sat.gob.mx/ocsp acaso el problema es que esta no es?
  #4 (permalink)  
Antiguo 25/03/2013, 20:39
 
Fecha de Ingreso: marzo-2013
Ubicación: CD Nezahualcoyotl
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Pregunta: Firma Electronica SAT Mexico

Hola que tal, ps yo estoy en un dilema, o mas bien tengo una duda al generar la solución ideal para la firma electrónica en la empresa que elaboro. La cuestión es que nos piden desarrollar una aplicación la cual pueda generar firmas y validarlas mediante los archivos .cer y .key el inconveniente que nos pusieron es que tiene que ser C# (Visual Studio) forzosamente y parecido a un applet de Java. Ya logramos desarrollar los métodos de firmado y validación pero aún no sabemos como será la solución, me sugirieron crear un control ActiveX pero este creo se desarrolla en C++.

Espero alguien me pueda orientar en este tema y darme una cordial bienvenida en Foros del Web.

Saludos
  #5 (permalink)  
Antiguo 22/10/2015, 12:54
Avatar de enocbahena  
Fecha de Ingreso: octubre-2015
Mensajes: 3
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Firma Electronica SAT Mexico

Buen día!

Puedes revisar el estatus del servicio ocsp con esta herramienta:

https://certificate.revocationcheck.com

También existe una manera de conectarse al OCSP por https con el siguiente enlance

https://cfdi.sat.gob.mx/edofiel

Teniendo entonces
https://cfdi.sat.gob.mx/edofiel
o
http://sat.gob.mx/ocsp


Si el problema persiste, es posible que se deba a que tus certificados AC no son los correctos generados por la SAT. O de ser posible que exista una actualización de los mismos.

http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/certificado_sello_digital.aspx

Hay una regla (esta forma no me gusta), para determinar el AC

Ej.
‎30 30 30 30 31 30 30 30 30 30 30 33 30 36 31 35 34 38 31 32

Donde:
- Eliminando el primer 3 de cada par.
- La posición #9 determina el AC con el cual fue emitido.

Quedando:
0 0 0 0 1 0 0 0 0 0 0 3 0 6 1 5 4 8 1 2

Indicando que el certificado corresponde al AC3

Esto no podría ser fiable, ya que las posiciones podrían cambiar.

Y la otra, es leer el issuer del certificado y encontrar así quien emitió el certificado.

Saludos

Última edición por enocbahena; 23/10/2015 a las 10:49 Razón: Nueva información agregada

Etiquetas: electronica, firma, mexico, sat, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:43.